前言
一开始,我们在写项目的时候,前端要什么数据,我们就返回什么数据,每个接口也都写得不一样很乱;随着前后端的分离;对于代码规范的要求也越来越严谨;接口都是统一样式的返回模板;
下面,接受一种我之前用过的返回模板;
一、首先来看下我们的Controller接口
/** * 获取用户信息 * @param token 微信登入者token * @param id 商品id * @return 商品详细信息 */ @PostMapping(value = "getUserInfo") @ResponseBody public ResultResponse getUserInfo( @RequestParam(value = "token") String token){ ResultResponse result = new ResultResponse(); //这里获取用户信息的类就不贴出来了 User user = userService.getUserByToken(token); result.setData(user ); return result.setStatus(ResponseCode.SUCCESS); }
我们可以看出,接口返回的是ResultResponse类;下面来剖析这个类;
二、统一样式返回模板ResultResponse剖析
2.1ResultResponse类:
package com.himo.common; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Data; /** * @Author: laixiansong * @Description: http请求 * @Vesion: 1.0.0 * @Date: 2017/10/17 */ @Data public class ResultResponse<T> { /** 错误码 */ private Integer code; /** 错误信息 */ private String msg; @JsonInclude(JsonInclude.Include.NON_NULL) private T data; public void setData(T data) { this.data = data; } public ResultResponse setStatus(ResponseCode responseCode){ this.code = responseCode.getCode(); this.msg = responseCode.getDesc(); return this; } public String getMsg() { return msg; } }
ResultResponse类包含了错误码、错误信息、返回的对象json;
2.2枚举类
从ResultResponse类中我们可以看出,错误码和错误信息是一一对应的,我们用一个枚举类ResponseCode来封装;
ResponseCode:
package com.himo.common; /** * @Author: laixiansong * @Description: * @Vesion: 1.0.0 * @Date: 2017/10/17 */ public enum ResponseCode { SUCCESS(0,"SUCCESS"), ERROR(1,"ERROR"), REQUEST_PARAMS_ERROR(1003,"请求参数错误"), NOT_WX_LOGIN(1004,"非微信端登录"), WX_LOGIN_PARAMS_ERROR(1005,"微信登录code错误"), NO_LOGIN(1006,"登录状态失效"), ; private final int code; private final String desc; ResponseCode(int code, String desc){ this.code = code; this.desc = desc; } public int getCode() { return code; } public String getDesc() { return desc; } }
我们可以在枚举类中加入我们想要增加的错误信息和错误码;
这样就是一个完成的Java接口返回的模板了;
总结
技术在不断更新换代,但是它的基础没有变,要想更好的维护项目,使得代码更加的美观和正规,所有接口统一返回统一类是非常有必要的;
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
主要内容:1.接口相互作用,2.返回格式,3.数据,4.控制层控制器,5.美观美化,6.优雅优化,7.其他优化方案1.接口相互作用 前端和前端进行交互,前端按约定的请求URL路径,并合并相关参数,进入服务器接收请求,进行业务处理,返回数据给前端。 2.返回格式 我们可以参考这样的设计,这样的好处就把错误类型归类到某个区间内,如果区间不够,可以设计成4个数字。 这样前端开发人员在得到返回值后,根据状态码就可以知道,大概什么错误,再根据消息相关的信息描述,可以快速定位。 状态码和信息就会一一对应,比
我有一个接口,它的函数当前返回它自己。但是,我希望任何实现类都返回该类,而不是基接口。例如,在这个简化的示例中,它工作得很好: 这显然是失败的,因为重写函数不再与接口中的声明匹配。 我需要baz()返回Class而不是Interface,因为调用者可以以任意顺序调用bar和baz任意次数,但是目前所有bar()调用必须在所有baz()调用之前,除非我们重复地向下调用。 更复杂的是foo()函数,它
好吧,乖点。 这里有一个枚举,它实现了一个接口,该接口返回一个“原始类型”,它给我一个关于接口中的方法的警告。 如果我将接口的方法更改为: 它会在的方法签名上变为未经检查的警告。如果我改变的签名: 然后返回有一个不兼容的类型错误,因为
我有一个方法,我需要写单元测试用例。该方法返回类型。
但是,我的问题在于如何理解当我尝试使用而不是执行相同操作时会发生什么 这里的例子是,有一个接口定义被定义为接受一个接口参数,实际上,这个接口参数是由实现接口的枚举实现的: 我有两个接口: 我看到了一些关于,但这扩展了我的理解。请救命! 顺便说一句,我认为返回类之前的泛型声明被用来指定“T”以用于类型侵蚀的目的,这是正确的吗?
我有一个接口 创建 有两种方法,一种是异步的,一种是同步的。我想为这两个方法中的每一个提供一个接口实现。 对于异步方法,其实现可能如下所示: 但是我应该如何实现使用同步方法创建 的类 呢? 我可以实现方法以同步运行: 然后,编译器将警告不要在方法签名中使用 : 此异步方法缺少'await'运算符,将同步运行。考虑使用'await'运算符等待非阻塞API调用,或'await task.run(...