接口开发
前言
接口开发是后端的重要工作,是实现逻辑功能的重要工具,接口会生成用户需要的数据,然后由前端根据这些数据渲染成用户所需要的页面,举一个例子,当我们在搜索引擎上搜索一个字段时,会调用后端接口,从数据库等处查询我们需要的数据,然后返回给前端,由前端根据查询到的数据渲染成我们看到的搜索引擎的界面。这就是接口的意义所在,我们能看到展现的页面,一切的根本就在于接口。
一、实体类
下面实体类都是和接口相关的: 1.ResultModel 这个类是基础实体类,有如下属性: success:返回结果标识,是一个布尔值,true / false(成功 / 失败) message:描述信息,错误时,可以在这里填写错误的详细信息 data:数据,是一个泛型,可以是数组或者对象等等,成功并且需要返回数据时,才有该参数
2.ApiResultModel 结构关系如下: ResultModel └── ApiResultModel 在这个类里面增加了 code 属性,也是一个泛型,你可以自定义你的返回码类型,可以是整数,或者字符串。
3.PageResultModel 结构关系如下: ResultModel └── PageResultModel 这个类主要主要分页返回结果,所以,增加了以下属性: total:数据总条数,Long型 size:每页条数,整数 pages:总页数,Long型 current:当前页,Long型 上面三者都是父子类的关系,拥有者共通的特性。
4 .Helper工具类 ResultHelper ResultHelper是与ResultModel对应的
success(String message) 成功,携带描述信息
success(String message, T data) 成功,携带描述信息和数据
error(String message) 错误,携带详细的描述信息
ApiResultHelper ApiResultHelper是与ApiResultModel对应的
success(S code, String message) 成功,携带返回码和描述信息
success(S code, String message, T data) 成功,携带返回码、描述信息和数据
error(S code, String message) 错误,携带错误码和详细描述信息
PageResultHelper PageResultHelper是与PageResultModel对应的
success(String message) 成功,携带描述信息
success(String message, T data) 成功,携带描述信息和数据
success(String message, T data, long total, int size, long pages, long current) 成功,携带描述信息、数据、总数、每页条数、总页数、当前页
error(String message) 错误,携带详细的描述信息
二、接口开发案例
1.利用Helper进行返回
@ApiOperation(value = "添加方法示例")
@PostMapping
public ResultModel<?> add() {
return ResultHelper.success("添加成功");
}
结果:
{
"success": true,
"message": "添加成功"
}
2.ResultUtils工具类
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public abstract class ResultUtils {
public static Integer SUCCESS_CODE = 200;
public static String SUCCESS_MSG = "处理成功";
public static Integer ERROR_CODE = 201;
public static String ERROR_MSG = "网络错误";
public static Map<String, Object> success() {
Map<String, Object> resultMap = new HashMap<String, Object>();
resultMap.put("code", SUCCESS_CODE);
resultMap.put("msg", SUCCESS_MSG);
return resultMap;
}
public static Map<String,Object> errorCode(Integer code,String msg){
Map<String, Object> resultMap = new HashMap<String, Object>();
resultMap.put("code", code);
resultMap.put("msg", msg);
return resultMap;
}
public static Map<String, Object> success(Object result) {
Map<String, Object> resultMap = new HashMap<String, Object>();
resultMap.put("code", SUCCESS_CODE);
resultMap.put("msg", SUCCESS_MSG);
resultMap.put("info", result);
return resultMap;
}
public static Map<String, Object> success(List list,int count) {
Map<String, Object> resultMap = new HashMap<String, Object>();
resultMap.put("code", SUCCESS_CODE);
resultMap.put("msg", SUCCESS_MSG);
resultMap.put("info", list);
resultMap.put("total", count);
return resultMap;
}
public static Map<String, Object> fail() {
Map<String, Object> resultMap = new HashMap<String, Object>();
resultMap.put("code", ERROR_CODE);
resultMap.put("msg", ERROR_MSG);
return resultMap;
}
public static Map<String, Object> fail(String msg) {
Map<String, Object> resultMap = new HashMap<String, Object>();
resultMap.put("code", ERROR_CODE);
resultMap.put("msg", msg);
return resultMap;
}
public static Map<String, Object> noFocus(String msg) {
Map<String, Object> resultMap = new HashMap<String, Object>();
resultMap.put("code", 260);
resultMap.put("msg", msg);
return resultMap;
}
}
现在基于工具类来实践success方法:
@ApiOperation(value = "删除方法示例")
@DeleteMapping
public ResultModel<?> delete() {
return ResultUtils.success();
}
返回结果:
{
"success": 200,
"message": "处理成功"
}
再基于工具类实践fail方法
@ApiOperation(value = "修改方法示例")
@PutMapping
public ResultModel<?> update() {
return ResultUtils.fail( );
}
返回结果:
{
"success": 201,
"message": "网络错误"
}
上面只是举例,我们不讨论修改不成功和网络错误的关系。
查询案例
基础工作都是基于工具类实现,我们需要在工具类中去实现定义,然后再基于定义上去返回结果。
public class ResultUtils {
public static ResultModel <?> success() {
return ResultHelper.success("Success");
}
public static <T> ResultModel <T> success(T data) {
return ResultHelper.success("Success", data);
}
public static ResultModel <?> error(String message) {
return ResultHelper.error(message);
}
}
@ApiOperation(value = "查询方法示例")
@GetMapping
public ResultModel<?> get() {
List<Map<String, String>> list = new ArrayList<>();
Map<String, String> map1 = new HashMap<>();
map1.put("name", "1");
map1.put("desc", "11");
list.add(map1);
Map<String, String> map2 = new HashMap<>();
map2.put("name", "22");
map2.put("desc", "2222");
list.add(map2);
Map<String, String> map3 = new HashMap<>();
map3.put("name", "4444");
map3.put("desc", "44444444");
list.add(map3);
return ResultUtils.success(list);
}
返回结果如下
{
"success": true,
"message": "Success",
"data": [
{
"name": "1",
"desc": "11"
},
{
"name": "22",
"desc": "2222"
},
{
"name": "4444",
"desc": "44444444"
}
]
}
|