接口设计

220 阅读1分钟

一、 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:删除某个指定动物园的指定动物

二、响应体

  1. 实体响应
{
    code: 2000/5000,
    success: true/false
    message: "请求成功",
    data: {
        id:"abcdefg",
        name: "北京动物园",
        ...
    }
}
  1. 集合响应
{
    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;
    }
}

四、响应包装类

  1. 成功响应包装类
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;
    }
}
  1. 失败响应包装类(异常)
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;
    }
}