时间:2021-05-20
这篇文章主要介绍了Java接口统一样式返回模板简介,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
背景
在进行接口开发时,一般需要一个固定的返回样式,成功和失败的时候,都按照这种格式来进行统一的返回,这样,在与其他人进行接口之间的联调时不会显得很杂乱无章。而这种固定的格式如果放在Java的每个接口单独处理时,又会在接口开发时很繁琐,所以这个时候可以采用封装一个实体类,统一返回固定模板格式的内容。
封装模板
先看一下没有封装之前,接口代码和返回格式:
/** * 用户修改 * @return 返回修改的用户信息 */@PutMapping(value = "update")public User update(@RequestBody User user) { User updatedUser = userService.update(user); return updatedUser;}{ "userId": "0d67cfa7-f6a1-46b6-8e5a-b605afc98c44", "username": "ww", "password": "123456", "status": 0, "createTime": 310863886132307, "updateTime": 312955781619836}很显然,这种原始的内容返回虽然很直观,但是如果在发生错误的时候,那么接口的返回就比较的不自然了,甚至会将底层的错误对外暴露,下面介绍下一个简单的统一接口样式的封装:
枚举类ResponseCode:定义返回码code及提示信息msg
我们先定义一个枚举类,用于封装返回的code码和提示信息msg,当然也可以封装其他的信息,比如状态status,这个可以根据自己的项目自由选择。
package com.server.config;/** * @Package com.server.config * @Author wuzy * @Date 2019/10/30 14:47 * @Version V1.0 * @Description: code码封装枚举类 */public enum ResponseCode { /** 成功 */ SUCCESS("200", "成功"), /** 操作失败 */ ERROR("500", "操作失败"); private ResponseCode(String value, String msg){ this.val = value; this.msg = msg; } public String val() { return val; } public String msg() { return msg; } private String val; private String msg;}封装类ResultData: 定义code、msg及数据data
再定义一个封装类ResultData,该类用于接口返回时的统一格式封装,这里,我们定义了三个属性,分别为状态码code,提示消息msg以及返回的数据data。下面是具体的代码:
package com.server.config;import lombok.Data;/** * @Package com.server.config * @Author wuzy * @Date 2019/10/30 14:38 * @Version V1.0 * @Description: 返回样式封装 */@Datapublic class ResultData { private String code; private String msg; private Object data; public static ResultData success(Object data) { return resultData(ResponseCode.SUCCESS.val(), ResponseCode.SUCCESS.msg(), data); } public static ResultData success(Object data, String msg) { return resultData(ResponseCode.SUCCESS.val(), msg, data); } public static ResultData fail(String code, String msg) { return resultData(code, msg, null); } public static ResultData fail(String code, String msg, Object data) { return resultData(code, msg, data); } private static ResultData resultData(String code, String msg, Object data) { ResultData resultData = new ResultData(); resultData.setCode(code); resultData.setMsg(msg); resultData.setData(data); return resultData; }}可以根据自己项目的需求进行方法、属性等内容的扩展。
测试实例
这里,我们使用UserController中的save()方法进行测试,查看其添加了统一样式之后的效果,先看下该方法:
/** * 用户保存 * @return 返回保存的用户信息 */ @PostMapping(value = "save") @ApiOperation(value = "保存用户信息", notes = "保存用户的详细信息") public ResultData save(@RequestBody User user) { try { User savedUser = null; if (user != null) { if (StringUtils.isEmpty(user.getUserId())) { user.setUserId(UUID.randomUUID().toString()); } savedUser = userService.save(user); // int i = 1/0; // 测试异常现象时放开这行代码 } return ResultData.success(savedUser); } catch (Exception e) { e.printStackTrace(); return ResultData.fail(ResponseCode.ERROR.val(), "用户保存过程中发生异常,请检查!"); } }先看一下成功(也就是调用success方法)的情况
{ "code": "200", "msg": "成功", "data": { "userId": "0d67cfa7-f6a1-46b6-8e5a-b605afc98c44", "username": "ww", "password": "123456", "status": 0, "createTime": 310863886132307, "updateTime": 312955781619836 }}再看一下发生异常或者保存失败时候的错误提示信息,这里使用1/0的异常来测试,结果如下:
{ "code": "500", "msg": "用户保存过程中发生异常,请检查!", "data": null}到这里,基本上关于接口样式的模板也就介绍完了,如有不准确的地方,请留言多多指教。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
前言一开始,我们在写项目的时候,前端要什么数据,我们就返回什么数据,每个接口也都写得不一样很乱;随着前后端的分离;对于代码规范的要求也越来越严谨;接口都是统一样
一、选款的目地选款的目地:1、测到这一样式是否好的样式、是否有变成爆品的特质;2、假如这一样式同行业早已爆品做起来了,也就代表着这一样式是开启的销售市场的大门口
Set接口简介Set接口和List接口一样,同样继承自Collection接口,它与Collection接口中的方法基本一致,并没有对Collection接口进
飞鱼的声纳顶部的搜索框让我头疼了很长时间,原因是总不能获得跨浏览器的统一样式。主要的问题有这么两个:一是input标签的高度不能统一,Firefox和IE中的高
Java8新特性内建函数式接口 在之前的一片博文Lambda表达式,提到过Java8提供的函数式接口。在此文中,将介绍一下Java8四个最基本的函数式接口