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

  • 阿里云国际版折扣https://www.yundadi.com

  • 阿里云国际,腾讯云国际,低至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已经提供了强大的异常处理和响应体包装的支持通常我们不需要自己实现这样的功能。

  • 阿里云国际版折扣https://www.yundadi.com

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

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

    python面试题二:数组(字符串)实现反转的方式

    面试被问到数组反转的实现方式: 方式一 a_list = [1, 4, 6, 2, 9, 4, 8, 3, 7] print(reversed(a_list)) aa_list = list(reversed(a_list)) print(a_list) print...

    【Dart 教程系列第 34 篇】Dart 之 indexOf、lastIndexOf 获取指定元素在字符串的索引

    这是【Dart 教程系列第 34 篇】如果觉得有用的话欢迎关注专栏。 indexOf 源码如下所示 int indexOf(Pattern pattern, [int start = 0]); 语法 由前向后查找指定字符返回值是 int 类型如果有符合条件的则返回对应字符所在的索...

    RT-1设备配置命令

    Router_config#hostname RT-1 RT-1_config#int loopback 1 RT-1_config_l1#ip add 2.2.2.2 255.255.255.255 RT-1_config#int g0/0 RT-1_config_g0/0#ip add 192....

    #yyds干货盘点 前端小知识点扫盲笔记记录2

    前言大家好 我是歌谣 今天继续进行前端知识的一些总结 想加入前端巅峰交流群私信我innerHTML和innerText的使用<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"&g...

    UVa 642 Word Amalgamation (查字典&字符串排序)

    642 - Word AmalgamationTime limit: 3.000 secondshttp://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=583In milli...

    Python自动化脚本代码如何写 - 编程语言

    这篇文章主要讲解了“Python自动化脚本代码如何写”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python自动化脚本代码如何写”吧! 1、自动化阅读网页新闻这个脚本能够实现从网页中抓取文...