Spring Boot 中如何统一 API 接口响应格式?( 四 )

自定义 ReturnValueConfig 实现 InitializingBean 接口,afterPropertiesSet 方法会被自动调用,在该方法中,我们将 RequestMappingHandlerAdapter 中已经配置好的 HandlerMethodReturnValueHandler 拎出来挨个检查,如果类型是 RequestResponseBodyMethodProcessor,则重新构建,用我们自定义的 MyHandlerMethodReturnValueHandler 代替它,最后给 requestMappingHandlerAdapter 重新设置 HandlerMethodReturnValueHandler 即可 。
最后再提供一个测试接口:
@RestControllerpublic class UserController {    @GetMapping("/user")    public User getUserByUsername(String username) {        User user = new User();        user.setUsername(username);        user.setAddress("www.javaboy.org");        return user;    }}public class User {    private String username;    private String address;    //省略其他}配置完成后,就可以启动项目啦 。
项目启动成功后,访问 /user 接口,如下:

Spring Boot 中如何统一 API 接口响应格式?

文章插图
 
完美 。
4.小结其实统一 API 接口响应格式办法很多,可以参考松哥之前分享的 如何优雅的实现 Spring Boot 接口参数加密解密?,也可以使用本文中的方案,甚至也可以自定义过滤器实现 。
本文的内容稍微有点多,不知道大家有没有发现松哥最近发了很多 SpringMVC 源码相关的东西,没错,本文其实是松哥 SpringMVC 源码解析的一部分,为了源码解析不那么枯燥,所以强行加了一个案例进来,祝小伙伴们学习愉快~




推荐阅读