SpringbootAPI接口统一输出消息格式保持原接口返回值不变
环境:Springboot2.4.11
很多时候我们对接口的返回值都会做统一的处理,返回{code, message,data}等信息标识本次请求的处理结果,这统一的处理也都是在各自的Controller上做自行的处理。本篇内容告诉你如何通过ResponseBodyAdvice对象来实现对结果的统一处理,也就是说在Controller上我们不再对返回结果进行处理了,而是由统一的一个ControllerAdice Bean对象进行处理。这对我们的Controller接口来说可读性更强,也业务无关的东西一概不出现,同时代码也更加简洁。ResponseBodyAdvice是什么
ResponseBodyAdvice类型的Bean对象允许在执行@ResponseBody或ResponseEntity控制器方法之后但在使用HttpMessageConverter写入正文之前自定义响应。实现可以直接向RequestMappingHandlerAdapter和ExceptionHandlerExceptionResolver注册,或者更可能使用@ControllerAdvice进行注释,在这种情况下,它们都将被自动检测到。定义统一返回对象public class R { public R() { } private int code ; private String message ; private Object result ; private String errorDetails ; public R(int code, String message, Object result) { super(); this.code = code; this.message = message; this.result = result; } public R(int code, String message, Object result, String errorDetails) { super(); this.code = code; this.message = message; this.result = result; this.errorDetails = errorDetails ; } public R(int code, String message, String errorDetails) { super(); this.code = code; this.message = message; this.errorDetails = errorDetails ; } public R(int code, String message) { super(); this.code = code; this.message = message; } public static R success() { return success(null) ; } public static R success(Object data) { return success("成功", data) ; } public static R success(String message, Object data) { return new R(ResultCode.SUCCESS, message, data) ; } public static R failure() { return failure("失败") ; } public static R failure(Object data) { return failure("失败", data) ; } public static R failure(String message) { return failure(message, null) ; } public static R failure(int code, String message) { return new R(code, message) ; } public static R failure(String message, Object data) { return new R(ResultCode.FAILURE, message, data) ; } public static R failure(String message, String errorDetails) { return new R(ResultCode.FAILURE, message, errorDetails) ; } public static R error(String message, String errorDetails) { return new R(ResultCode.ERROR, message, errorDetails) ; } public static interface ResultCode { int SUCCESS = 0 ; int FAILURE = -1 ; int ERROR = 500 ; } }定义ResponseBodyAdvice@RestControllerAdvice public class ResponseResultControllerAdvice implements ResponseBodyAdvice
高精尖科技产品云集华为Mate20系列惊艳亮相珠海航展今天上午,第12届中国国际航空航天博览会(珠海航展)正式开幕,此次航展为大家带来了很多高精尖产品,首次实现陆海空天电的全覆盖。据了解,此次航展有40多个国家和地区的700多家展商参
坐稳财富500强的京东,不止做技术这样简单!近日,在综合考量了全球范围内中国上市企业在过去一年的业绩和成就,财富中文网发布了最新的财富中国500强排行榜,京东排位第18名,领跑所有上榜的互联网企业。毋庸置疑,京东的快速发展与
火了!菜鸟再次出手,世界的家具或将被中国承包!今天,菜鸟携家具出海!又一中国方案驶向全球!刚刚传来消息,继菜鸟打通中国与海外出海方案后,中国家具也乘着菜鸟之风走向了世界。要知道,家具这样的大家伙,在中国的大街小巷运转已经够呛了
关爱父母健康,私人医生H1让这变得如此简单在过去的四十年间,中国完成了人口转变,在2000年进入老龄社会以后,不断提升的人口预期寿命和持续的低生育水平使得中国人口老龄化开始了加速的进程,应对老龄社会所面临的医疗长期照护压力
通吃电商流媒体网游大数据华为云服务器傲视群雄当前云计算应用日趋火热,云计算所提供的大数据分析人工智能,乃至于物联网等全新的应用也已经成为用户所关注的热点。但是云计算的基础计算能力,却长期受到忽视。在云计算的虚拟系统中,网络的
Mate力四射张云龙自爆是拍照狂魔!如今正值足球大战之际,足球也成为了最热门的话题,而说到演艺圈的明星,也有很多和足球有着深厚的渊源,比如说张云龙就是其中一个。在Mate力四射冠军时刻华为终端官方微博联合新浪体育官方
阿里巴巴王矛AliOS让汽车进化出大脑7月27日,第二届中国汽车智能座舱论坛在广州举行,AliOS总经理王矛参加此次会议并做了主题演讲。他提出未来的方向应该是全车智能,是基于OS的融合智能,包括感知设备交互方式计算能力
私人医生H1健康手机如何在生活中担任你的专属医生?当下我们生活在一个较好的时代,生活质量不断提高,大部分人越来越注重养生,随之崛起的养生行业可谓是风生水起,各种打着养生旗号的手环公众号APP等,充斥着我们的朋友圈,赚取了不少点击量
原来小龙虾也能借钱,生鲜商家的福利来了小龙虾鲜嫩多汁,入味Q弹,北方称麻小,南方叫作口味虾,是全国人民都喜爱的生鲜美食。有数据显示,每年小龙虾的消耗近百万吨,是吃货吃出的一个千亿市场!这让无数商家忧也愁,小龙虾本来是时
7nm麒麟980实力碾压10nm骁龙845,Mate20下月首发2018年下半年,芯片行业即将迎来全新7nm制程工艺,打头阵的无疑是移动芯片。此前苹果华为高通的旗舰芯片都是采用10nm工艺,而目前华为手机领先一步发布的华为麒麟980,采用台积电
暗光样张佐证华为P20系列堪称夜神之眼在手机硬件性能飞速发展的今天,人们对于手机拍照功能的要求同样日新月异,白天或许每款旗舰机型的差距不大,但在暗光情形下大部分手机的拍照短板就暴露出来。弱光下拍摄本就是一件极具挑战的事