Spring實現統一返回值格式

用於項目中全局處理返回結果ide

自定義返回結果實體:this

public class Result<T> implements Serializable {

    private static final long serialVersionUID = -2354377668069235864L;
    public int code;
    private T data;
    private String message = "調用成功!";

    public Result(){
    }
    public Result(T data){
        this.data = data;
    }
    public Result(int code, String message){
        this.code = code;
        this.message = message;
    }



    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public String toJson(){
        return JSON.toJSONString(this);
    }

    public static Result<?> fail(String message) {
        return new Result<>(500,message);
    }
}

@ControllerAdvice處理返回結果spa

@ControllerAdvice
public class ResponseAdvisor implements ResponseBodyAdvice<Object> {

    @Override
    public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {
        return true;
    }

    @Override
    public Object beforeBodyWrite(Object body,
                                  MethodParameter returnType,
                                  MediaType selectedContentType, Class<? extends HttpMessageConverter<?>> selectedConverterType,
                                  ServerHttpRequest request,
                                  ServerHttpResponse response) {

        String requestPath = request.getURI().getPath();
        /*if (!requestPath.startsWith("/canal/park")) {
            return body;
        }*/

        if (body instanceof Result) {
            return body;
        }

        return new Result(body);
    }
}
相關文章
相關標籤/搜索