【AOP系列】8.API统一处理-CSDN博客

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

在Java中我们可以使用Spring AOP面向切面编程和自定义注解来做API接口的统一返回格式处理。以下是一个简单的示例

首先我们创建一个自定义注解用于标记需要进行统一返回格式处理的方法

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.METHOD) //注解放置的目标位置METHOD是可放在方法级别
@Retention(RetentionPolicy.RUNTIME) //注解在哪个阶段执行
public @interface ApiResponseFormat {
    // 可以定义注解的一些属性
}

然后我们创建一个切面用于处理标记了@ApiResponseFormat的方法

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

@Aspect
@Component
public class ApiResponseFormatAspect {

    @Pointcut("@annotation(com.yourpackage.ApiResponseFormat)") //指定自定义注解的路径
    public void pointcut() {}

    @Around("pointcut()")
    public Object around(ProceedingJoinPoint joinPoint) {
        Object result = null;
        try {
            result = joinPoint.proceed(); //执行方法
        } catch (Throwable e) {
            // 异常处理返回错误信息
            return new ApiResponse(false, "服务器内部错误");
        }
        // 正常处理包装返回结果
        return new ApiResponse(true, result);
    }
}

在这里ApiResponse是一个自定义的类用于包装API接口的返回结果

public class ApiResponse {
    private boolean success;
    private Object data;

    public ApiResponse(boolean success, Object data) {
        this.success = success;
        this.data = data;
    }

    // getter和setter方法...
}

最后我们在需要进行统一返回格式处理的方法上添加@ApiResponseFormat注解

public class SomeController {

    @ApiResponseFormat
    public Object someApi(SomeData data) {
        //...
    }
}

这样当someApi方法被调用时ApiResponseFormatAspect中的around方法会被触发从而实现API接口的统一返回格式处理。

注意这只是一个简单的示例实际使用时你可能需要处理更多的细节例如根据不同的异常返回不同的错误信息等。而且Spring已经提供了强大的异常处理和响应体包装的支持通常我们不需要自己实现这样的功能。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

“【AOP系列】8.API统一处理-CSDN博客” 的相关文章

PTA 浙大版《C语言程序设计(第4版)》题目集 参考答案(编程题)

目录 PTA 浙大版《C语言程序设计第4版》题目集 参考答案编程题本答案配套详解教程专栏练习2-1 Programming in C is fun! (5 分)练习2-3 输出倒三角图案 (5 分)练习2-4 温度转换 (5 分)练习2-6 计算物体自由下落的距离 (5 分)练习2-8 计算...

redis序列化及各种序列化情况是什么 - 开发技术

这篇文章主要讲解了“redis序列化及各种序列化情况是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“redis序列化及各种序列化情况是什么”吧!序列化基本默认使用的是jdk序列化 会使字符串转义在实际开发中,当我们...

php如何实现点击删除一行 - 编程语言

今天小编给大家分享一下php如何实现点击删除一行的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。 首先,我们需要在数据库中创建...

Ruby正则表达式怎么使用 - 开发技术

这篇文章主要介绍了Ruby正则表达式怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Ruby正则表达式怎么使用文章都会有所收获,下面我们一起来看看吧。Ruby 正则表达式正则表达式是一种特殊序列的字符,它通过使用有专门语法的模式来匹...

POJ 2271 HTML (字符串处理)

HTML http://poj.org/problem?id=2271 Time Limit:  1000MS Memory Limit: 65536K Description If you ever tried to read a...

Pytorch固定随机种子&&复现模型

官网 Reproducibility — PyTorch 1.11.0 documentation 在神经网络中参数默认是进行随机初始化的。不同的初始化参数往往会导致模型的训练结果会存在一定的差异。当得到比较好的结果时我们通常希望这个结果是可以复现的就需要保证每一次初始化的参数都不变这就引入了随机...