一、 restful接口设计示例
- GET /zoos:列出所有动物园
- GET /zoos/ID:获取某个指定动物园的信息
- POST /zoos:新建一个动物园
- PUT /zoos/ID:更新某个指定动物园的信息(提供该动物园的全部信息)
- PATCH /zoos/ID:更新某个指定动物园的信息(提供该动物园的部分信息)
- DELETE /zoos/ID:删除某个动物园
- GET /animals?zoosId=100:列出id=100d的动物园的所有动物
- DELETE /animals/ID:删除某个指定动物园的指定动物
二、响应体
- 实体响应
{
code: 2000/5000,
success: true/false
message: "请求成功",
data: {
id:"abcdefg",
name: "北京动物园",
...
}
}
- 集合响应
{
code: 2000/5000,
success: true/false
message: "请求成功/失败",
data: {
count: 2082, //数据总行数
list:[
{id:1, name:"北京动物园"},
{id:2, name:"顺义动物园"},
...
]
}
}
三、响应码枚举
public enum ResultCode{
SUCCESS(2000, true, "请求成功"),
...
FIALED(5000, false, "请求失败");
private int code;
private boolean success;
private String message;
ResultCode(int code, boolean success, String message){
this.code = code;
this.success = sucess;
this.message = message;
}
}
四、响应包装类
- 成功响应包装类
public class ResultVO<T> {
/**
* 状态码,比如2000代表响应成功
*/
private int code;
/**
* 成功失败标志
*/
private boolean success;
/**
* 响应信息,用来说明响应情况
*/
private String msg;
/**
* 响应的具体数据
*/
private T data;
public ResultVO(T data) {
this(1000, true, "success", data);
}
public ResultVO(int code, boolean success, String msg, T data) {
this.code = code;
this.msg = msg;
this.success = success
this.data = data;
}
public ResultVO(T data) {
this(ResultCode.SUCCESS, data);
}
public ResultVO(ResultCode resultCode, T data) {
this.code = resultCode.getCode();
this.msg = resultCode.getMsg();
this.data = data;
this.sucess = true;
}
}
- 失败响应包装类(异常)
public class APIException extends RuntimeException {
private int code;
private boolean success;
private String msg;
public APIException() {
this(5001, "接口错误");
}
public APIException(String msg) {
this(5000, msg);
}
public APIException(int code, String msg) {
super(msg);
this.code = code;
this.sucess = false;
this.msg = msg;
}
}