Spring统一返回Json工具类,带分页信息

Spring统一返回Json工具类,带分页信息_第1张图片

前言:

  • 项目做前后端分离时,我们会经常提供Json数据给前端,如果有一个统一的Json格式返回工具类,那么将大大提高开发效率和减低沟通成本。

  • 此Json响应工具类,支持带分页信息,支持泛型,支持HttpStatus标准返回码

效果预览:

Spring统一返回Json工具类,带分页信息_第2张图片

步入正题:

1. Resp工具类
import java.io.Serializable;
import java.util.Map;

/**
 * @Author: XiongFeng
 * @Description: Restful统一Json响应对象封装
 * @Date: Created in 9:39 2018/4/10
 */
public class Resp implements Serializable {
    private static final long serialVersionUID = 1L;

    private final static String SUCCESS_CODE = "200";

    /**
     * 返回状态码
     */
    private String status;

    /**
     * 返回消息
     */
    private String message;

    /**
     * 返回内容
     */
    private T data;

    /**
     * 分页信息
     */
    private PageInfo page;

    /**
     * 其他内容
     */
    private Map ext;

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getMessage() {
        return message;
    }

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

    public T getData() {
        return data;
    }

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

    public Map getExt() {
        return ext;
    }

    public void setExt(Map ext) {
        this.ext = ext;
    }

    public PageInfo getPage() {
        return page;
    }

    public void setPage(PageInfo page) {
        this.page = page;
    }

    public Resp(){
        this.status = SUCCESS_CODE;
        this.message = "SUCCESS";
    }

    public Resp(String status, String message) {
        this.status = status;
        this.message = message;
    }

    public Resp(String status, String message, T data) {
        this.status = status;
        this.message = message;
        this.data = data;
    }

    public Resp(String status, String message, T data, Map ext) {
        this.status = status;
        this.message = message;
        this.data = data;
        this.ext = ext;
    }

    public Resp(String status, String message, T data, PageInfo pageInfo) {
        this.status = status;
        this.message = message;
        this.data = data;
        this.page = pageInfo;
    }

    public Resp(String status, String message, T data, Map ext, PageInfo pageInfo) {
        this.status = status;
        this.message = message;
        this.data = data;
        this.ext = ext;
        this.page = pageInfo;
    }

    public Resp(String status, String message, T data, Long total, Integer pageNo, Integer pageSize){
        PageInfo pageInfo = new PageInfo(total, pageNo, pageSize);
        this.status = status;
        this.message = message;
        this.data = data;
        this.page = pageInfo;
    }

    public Resp(String status, String message, T data, Map ext, Long total, Integer pageNo, Integer pageSize){
        PageInfo pageInfo = new PageInfo(total, pageNo, pageSize);
        this.status = status;
        this.message = message;
        this.data = data;
        this.ext = ext;
        this.page = pageInfo;
    }

    //快速返回成功
    public static Resp success(){
        return new Resp(SUCCESS_CODE,"请求成功",null);
    }

    public static Resp success(T result){
        return new Resp(SUCCESS_CODE,"请求成功",result);
    }

    public static Resp success(String message, T result){
        return new Resp(SUCCESS_CODE,message,result);
    }

    public static Resp success(String message, T result, Map extra){
        return new Resp(SUCCESS_CODE,message,result, extra);
    }

    public static Resp success(T result, Long total, Integer pageNo, Integer pageSize){
        PageInfo pageInfo = new PageInfo(total, pageNo, pageSize);
        return new Resp(SUCCESS_CODE,"请求成功",result, pageInfo);
    }

    public static Resp success(T result, Map extra, Long total, Integer pageNo, Integer pageSize){
        PageInfo pageInfo = new PageInfo(total, pageNo, pageSize);
        return new Resp(SUCCESS_CODE,"请求成功",result, extra,pageInfo);
    }

    public static Resp success(String message, T result, Long total, Integer pageNo, Integer pageSize){
        PageInfo pageInfo = new PageInfo(total, pageNo, pageSize);
        return new Resp(SUCCESS_CODE,message,result,pageInfo);
    }

    public static Resp success(String message, T result, Map extra, Long total, Integer pageNo, Integer pageSize){
        PageInfo pageInfo = new PageInfo(total, pageNo, pageSize);
        return new Resp(SUCCESS_CODE,message,result, extra,pageInfo);
    }

    //快速返回失败状态
    public static Resp fail(){
        return new Resp(ErrorCode.SYSTEM_ERROR.getCode(),ErrorCode.SYSTEM_ERROR.getMessage());
    }

    public static Resp fail(T result){
        return new Resp(ErrorCode.SYSTEM_ERROR.getCode(),ErrorCode.SYSTEM_ERROR.getMessage(),result);
    }

    public Resp fail(String message, T result){
        return new Resp(ErrorCode.SYSTEM_ERROR.getCode(),message,result);
    }

    public Resp fail(String message, T result, Map extra){
        return new Resp(ErrorCode.SYSTEM_ERROR.getCode(),message,result, extra);
    }

    public static Resp fail(ErrorCode errorCode){
        return new Resp(errorCode.getCode(),errorCode.getMessage());
    }

    public static Resp fail(ErrorCode errorCode, T result){
        return new Resp(errorCode.getCode(),errorCode.getMessage(),result);
    }

    public static Resp fail(ErrorCode errorCode, String message, T result){
        return new Resp(errorCode.getCode(),message,result);
    }

    public static Resp fail(ErrorCode errorCode, String message, T result, Map extra){
        return new Resp(errorCode.getCode(),message,result, extra);
    }

    //快速返回自定义状态码
    public static Resp result(String statusCode, String message){
        return new Resp(statusCode,message);
    }

    public static Resp result(String statusCode, String message, T result){
        return new Resp(statusCode,message,result);
    }

    public static Resp result(String statusCode, String message, T result, Map extra){
        return new Resp(statusCode,message,result, extra);
    }

    public static Resp result(String statusCode, String message, T result, Long total, Integer pageNo, Integer pageSize){
        PageInfo pageInfo = new PageInfo(total, pageNo, pageSize);
        return new Resp(statusCode,message,result, pageInfo);
    }

    public static Resp result(String statusCode, String message, T result, Map extra, Long total, Integer pageNo, Integer pageSize){
        PageInfo pageInfo = new PageInfo(total, pageNo, pageSize);
        return new Resp(statusCode,message,result, extra,pageInfo);
    }

    //快速返回Http状态
    public static Resp httpStatus(HttpStatus httpStatus, String message){
        return result(httpStatus.toString(),message);
    }

    public static Resp httpStatus(HttpStatus httpStatus, String message, T result){
        return result(httpStatus.toString(),message,result);
    }

    public static Resp httpStatus(HttpStatus httpStatus, String message, T result, Map extra){
        return result(httpStatus.toString(),message,result, extra);
    }

    public static Resp httpStatus(HttpStatus httpStatus, String message, T result, Long total, Integer pageNo, Integer pageSize){
        PageInfo pageInfo = new PageInfo(total, pageNo, pageSize);
        return result(httpStatus.toString(),message,result, total, pageNo, pageSize);
    }

    public static Resp httpStatus(HttpStatus httpStatus, String message, T result, Map extra, Long total, Integer pageNo, Integer pageSize){
        PageInfo pageInfo = new PageInfo(total, pageNo, pageSize);
        return result(httpStatus.toString(),message,result, extra, total, pageNo, pageSize);
    }
}
2. PageInfo 用于封装分页信息的
import java.io.Serializable;

/**
 * @Author: XiongFeng
 * @Description: 分页信息
 * @Date: Created in 9:39 2018/4/10
 */
public class PageInfo implements Serializable{
     


    private static final long serialVersionUID = 1L;
    /**
     * 总记录数
     */
    private Long total;
    /**
     * 总页数
     */
    private Long totalPages;
    /**
     * 当前页
     */
    private Integer pageNo;
    /**
     * 页记录数
     */
    private Integer pageSize;

    public PageInfo(Long total) {
        this.total = total;
    }

    public PageInfo(Long total, Integer pageNo,
                    Integer pageSize) {
        this.total = total;
        this.totalPages = (total - 1) / pageSize + 1;
        this.pageNo = pageNo;
        this.pageSize = pageSize;
    }

    public static PageInfo page(Long total) {
        return new PageInfo(total);
    }

    public static PageInfo page( Long total, Integer pageNo,
                                      Integer pageSize) {
        return new PageInfo(total, pageNo, pageSize);
    }

    public Long getTotal() {
        return total;
    }

    public void setTotal(Long total) {
        this.total = total;
    }

    public Long getTotalPages() {
        return totalPages;
    }

    public void setTotalPages(Long totalPages) {
        this.totalPages = totalPages;
    }

    public Integer getPageNo() {
        return pageNo;
    }

    public void setPageNo(Integer pageNo) {
        this.pageNo = pageNo;
    }

    public Integer getPageSize() {
        return pageSize;
    }

    public void setPageSize(Integer pageSize) {
        this.pageSize = pageSize;
    }
}
4. ErrorCode 用于定义错误码
/**
 * @Author: XiongFeng
 * @Description: 错误码
 * @Date: Created in 9:39 2018/4/10
 */
public enum ErrorCode {

    SYSTEM_ERROR(500, "系统错误"),
    PARAMETER_CHECK_ERROR(400, "参数校验错误"),
    AUTH_VALID_ERROR(701, "用户权限不足"),
    UNLOGIN_ERROR(401, "用户未登录或登录状态超时失效"),
    ;

    private final Integer value;
    private final String message;

    ErrorCode(int value, String message) {
        this.value = value;
        this.message = message;
    }

    public int getValue() {
        return value;
    }

    public String getMessage() {
        return message;
    }

    @Override
    public String toString() {
        return value.toString();
    }

    public String getCode() {
        return value.toString();
    }

    public static ErrorCode getByCode(Integer value) {
        for (ErrorCode _enum : values()) {
            if (_enum.getValue() == value) {
                return _enum;
            }
        }
        return null;
    }

}
5. HttpStatus 提取自org.springframework.http,可以自己引入
/**
 * Enumeration of HTTP status codes.
 *
 * 

The HTTP status code series can be retrieved via { @link #series()}. * * @author Arjen Poutsma * @author Sebastien Deleuze * @author Brian Clozel * @since 3.0 * @see HttpStatus.Series * @see HTTP Status Code Registry * @see List of HTTP status codes - Wikipedia */ public enum HttpStatus { // 1xx Informational /** * { @code 100 Continue}. * @see HTTP/1.1: Semantics and Content, section 6.2.1 */ CONTINUE(100, "Continue"), /** * { @code 101 Switching Protocols}. * @see HTTP/1.1: Semantics and Content, section 6.2.2 */ SWITCHING_PROTOCOLS(101, "Switching Protocols"), /** * { @code 102 Processing}. * @see WebDAV */ PROCESSING(102, "Processing"), /** * { @code 103 Checkpoint}. * @see A proposal for supporting * resumable POST/PUT HTTP requests in HTTP/1.0 */ CHECKPOINT(103, "Checkpoint"), // 2xx Success /** * { @code 200 OK}. * @see HTTP/1.1: Semantics and Content, section 6.3.1 */ OK(200, "OK"), /** * { @code 201 Created}. * @see HTTP/1.1: Semantics and Content, section 6.3.2 */ CREATED(201, "Created"), /** * { @code 202 Accepted}. * @see HTTP/1.1: Semantics and Content, section 6.3.3 */ ACCEPTED(202, "Accepted"), /** * { @code 203 Non-Authoritative Information}. * @see HTTP/1.1: Semantics and Content, section 6.3.4 */ NON_AUTHORITATIVE_INFORMATION(203, "Non-Authoritative Information"), /** * { @code 204 No Content}. * @see HTTP/1.1: Semantics and Content, section 6.3.5 */ NO_CONTENT(204, "No Content"), /** * { @code 205 Reset Content}. * @see HTTP/1.1: Semantics and Content, section 6.3.6 */ RESET_CONTENT(205, "Reset Content"), /** * { @code 206 Partial Content}. * @see HTTP/1.1: Range Requests, section 4.1 */ PARTIAL_CONTENT(206, "Partial Content"), /** * { @code 207 Multi-Status}. * @see WebDAV */ MULTI_STATUS(207, "Multi-Status"), /** * { @code 208 Already Reported}. * @see WebDAV Binding Extensions */ ALREADY_REPORTED(208, "Already Reported"), /** * { @code 226 IM Used}. * @see Delta encoding in HTTP */ IM_USED(226, "IM Used"), // 3xx Redirection /** * { @code 300 Multiple Choices}. * @see HTTP/1.1: Semantics and Content, section 6.4.1 */ MULTIPLE_CHOICES(300, "Multiple Choices"), /** * { @code 301 Moved Permanently}. * @see HTTP/1.1: Semantics and Content, section 6.4.2 */ MOVED_PERMANENTLY(301, "Moved Permanently"), /** * { @code 302 Found}. * @see HTTP/1.1: Semantics and Content, section 6.4.3 */ FOUND(302, "Found"), /** * { @code 302 Moved Temporarily}. * @see HTTP/1.0, section 9.3 * @deprecated in favor of { @link #FOUND} which will be returned from { @code HttpStatus.valueOf(302)} */ @Deprecated MOVED_TEMPORARILY(302, "Moved Temporarily"), /** * { @code 303 See Other}. * @see HTTP/1.1: Semantics and Content, section 6.4.4 */ SEE_OTHER(303, "See Other"), /** * { @code 304 Not Modified}. * @see HTTP/1.1: Conditional Requests, section 4.1 */ NOT_MODIFIED(304, "Not Modified"), /** * { @code 305 Use Proxy}. * @see HTTP/1.1: Semantics and Content, section 6.4.5 * @deprecated due to security concerns regarding in-band configuration of a proxy */ @Deprecated USE_PROXY(305, "Use Proxy"), /** * { @code 307 Temporary Redirect}. * @see HTTP/1.1: Semantics and Content, section 6.4.7 */ TEMPORARY_REDIRECT(307, "Temporary Redirect"), /** * { @code 308 Permanent Redirect}. * @see RFC 7238 */ PERMANENT_REDIRECT(308, "Permanent Redirect"), // --- 4xx Client Error --- /** * { @code 400 Bad Request}. * @see HTTP/1.1: Semantics and Content, section 6.5.1 */ BAD_REQUEST(400, "Bad Request"), /** * { @code 401 Unauthorized}. * @see HTTP/1.1: Authentication, section 3.1 */ UNAUTHORIZED(401, "Unauthorized"), /** * { @code 402 Payment Required}. * @see HTTP/1.1: Semantics and Content, section 6.5.2 */ PAYMENT_REQUIRED(402, "Payment Required"), /** * { @code 403 Forbidden}. * @see HTTP/1.1: Semantics and Content, section 6.5.3 */ FORBIDDEN(403, "Forbidden"), /** * { @code 404 Not Found}. * @see HTTP/1.1: Semantics and Content, section 6.5.4 */ NOT_FOUND(404, "Not Found"), /** * { @code 405 Method Not Allowed}. * @see HTTP/1.1: Semantics and Content, section 6.5.5 */ METHOD_NOT_ALLOWED(405, "Method Not Allowed"), /** * { @code 406 Not Acceptable}. * @see HTTP/1.1: Semantics and Content, section 6.5.6 */ NOT_ACCEPTABLE(406, "Not Acceptable"), /** * { @code 407 Proxy Authentication Required}. * @see HTTP/1.1: Authentication, section 3.2 */ PROXY_AUTHENTICATION_REQUIRED(407, "Proxy Authentication Required"), /** * { @code 408 Request Timeout}. * @see HTTP/1.1: Semantics and Content, section 6.5.7 */ REQUEST_TIMEOUT(408, "Request Timeout"), /** * { @code 409 Conflict}. * @see HTTP/1.1: Semantics and Content, section 6.5.8 */ CONFLICT(409, "Conflict"), /** * { @code 410 Gone}. * @see HTTP/1.1: Semantics and Content, section 6.5.9 */ GONE(410, "Gone"), /** * { @code 411 Length Required}. * @see HTTP/1.1: Semantics and Content, section 6.5.10 */ LENGTH_REQUIRED(411, "Length Required"), /** * { @code 412 Precondition failed}. * @see HTTP/1.1: Conditional Requests, section 4.2 */ PRECONDITION_FAILED(412, "Precondition Failed"), /** * { @code 413 Payload Too Large}. * @since 4.1 * @see HTTP/1.1: Semantics and Content, section 6.5.11 */ PAYLOAD_TOO_LARGE(413, "Payload Too Large"), /** * { @code 413 Request Entity Too Large}. * @see HTTP/1.1, section 10.4.14 * @deprecated in favor of { @link #PAYLOAD_TOO_LARGE} which will be returned from { @code HttpStatus.valueOf(413)} */ @Deprecated REQUEST_ENTITY_TOO_LARGE(413, "Request Entity Too Large"), /** * { @code 414 URI Too Long}. * @since 4.1 * @see HTTP/1.1: Semantics and Content, section 6.5.12 */ URI_TOO_LONG(414, "URI Too Long"), /** * { @code 414 Request-URI Too Long}. * @see HTTP/1.1, section 10.4.15 * @deprecated in favor of { @link #URI_TOO_LONG} which will be returned from { @code HttpStatus.valueOf(414)} */ @Deprecated REQUEST_URI_TOO_LONG(414, "Request-URI Too Long"), /** * { @code 415 Unsupported Media Type}. * @see HTTP/1.1: Semantics and Content, section 6.5.13 */ UNSUPPORTED_MEDIA_TYPE(415, "Unsupported Media Type"), /** * { @code 416 Requested Range Not Satisfiable}. * @see HTTP/1.1: Range Requests, section 4.4 */ REQUESTED_RANGE_NOT_SATISFIABLE(416, "Requested range not satisfiable"), /** * { @code 417 Expectation Failed}. * @see HTTP/1.1: Semantics and Content, section 6.5.14 */ EXPECTATION_FAILED(417, "Expectation Failed"), /** * { @code 418 I'm a teapot}. * @see HTCPCP/1.0 */ I_AM_A_TEAPOT(418, "I'm a teapot"), /** * @deprecated See WebDAV Draft Changes */ @Deprecated INSUFFICIENT_SPACE_ON_RESOURCE(419, "Insufficient Space On Resource"), /** * @deprecated See WebDAV Draft Changes */ @Deprecated METHOD_FAILURE(420, "Method Failure"), /** * @deprecated See WebDAV Draft Changes */ @Deprecated DESTINATION_LOCKED(421, "Destination Locked"), /** * { @code 422 Unprocessable Entity}. * @see WebDAV */ UNPROCESSABLE_ENTITY(422, "Unprocessable Entity"), /** * { @code 423 Locked}. * @see WebDAV */ LOCKED(423, "Locked"), /** * { @code 424 Failed Dependency}. * @see WebDAV */ FAILED_DEPENDENCY(424, "Failed Dependency"), /** * { @code 426 Upgrade Required}. * @see Upgrading to TLS Within HTTP/1.1 */ UPGRADE_REQUIRED(426, "Upgrade Required"), /** * { @code 428 Precondition Required}. * @see Additional HTTP Status Codes */ PRECONDITION_REQUIRED(428, "Precondition Required"), /** * { @code 429 Too Many Requests}. * @see Additional HTTP Status Codes */ TOO_MANY_REQUESTS(429, "Too Many Requests"), /** * { @code 431 Request Header Fields Too Large}. * @see Additional HTTP Status Codes */ REQUEST_HEADER_FIELDS_TOO_LARGE(431, "Request Header Fields Too Large"), /** * { @code 451 Unavailable For Legal Reasons}. * @see * An HTTP Status Code to Report Legal Obstacles * @since 4.3 */ UNAVAILABLE_FOR_LEGAL_REASONS(451, "Unavailable For Legal Reasons"), // --- 5xx Server Error --- /** * { @code 500 Internal Server Error}. * @see HTTP/1.1: Semantics and Content, section 6.6.1 */ INTERNAL_SERVER_ERROR(500, "Internal Server Error"), /** * { @code 501 Not Implemented}. * @see HTTP/1.1: Semantics and Content, section 6.6.2 */ NOT_IMPLEMENTED(501, "Not Implemented"), /** * { @code 502 Bad Gateway}. * @see HTTP/1.1: Semantics and Content, section 6.6.3 */ BAD_GATEWAY(502, "Bad Gateway"), /** * { @code 503 Service Unavailable}. * @see HTTP/1.1: Semantics and Content, section 6.6.4 */ SERVICE_UNAVAILABLE(503, "Service Unavailable"), /** * { @code 504 Gateway Timeout}. * @see HTTP/1.1: Semantics and Content, section 6.6.5 */ GATEWAY_TIMEOUT(504, "Gateway Timeout"), /** * { @code 505 HTTP Version Not Supported}. * @see HTTP/1.1: Semantics and Content, section 6.6.6 */ HTTP_VERSION_NOT_SUPPORTED(505, "HTTP Version not supported"), /** * { @code 506 Variant Also Negotiates} * @see Transparent Content Negotiation */ VARIANT_ALSO_NEGOTIATES(506, "Variant Also Negotiates"), /** * { @code 507 Insufficient Storage} * @see WebDAV */ INSUFFICIENT_STORAGE(507, "Insufficient Storage"), /** * { @code 508 Loop Detected} * @see WebDAV Binding Extensions */ LOOP_DETECTED(508, "Loop Detected"), /** * { @code 509 Bandwidth Limit Exceeded} */ BANDWIDTH_LIMIT_EXCEEDED(509, "Bandwidth Limit Exceeded"), /** * { @code 510 Not Extended} * @see HTTP Extension Framework */ NOT_EXTENDED(510, "Not Extended"), /** * { @code 511 Network Authentication Required}. * @see Additional HTTP Status Codes */ NETWORK_AUTHENTICATION_REQUIRED(511, "Network Authentication Required"); private final int value; private final String reasonPhrase; HttpStatus(int value, String reasonPhrase) { this.value = value; this.reasonPhrase = reasonPhrase; } /** * Return the integer value of this status code. */ public int value() { return this.value; } /** * Return the reason phrase of this status code. */ public String getReasonPhrase() { return this.reasonPhrase; } /** * Whether this status code is in the HTTP series * { @link org.springframework.http.HttpStatus.Series#INFORMATIONAL}. * This is a shortcut for checking the value of { @link #series()}. */ public boolean is1xxInformational() { return Series.INFORMATIONAL.equals(series()); } /** * Whether this status code is in the HTTP series * { @link org.springframework.http.HttpStatus.Series#SUCCESSFUL}. * This is a shortcut for checking the value of { @link #series()}. */ public boolean is2xxSuccessful() { return Series.SUCCESSFUL.equals(series()); } /** * Whether this status code is in the HTTP series * { @link org.springframework.http.HttpStatus.Series#REDIRECTION}. * This is a shortcut for checking the value of { @link #series()}. */ public boolean is3xxRedirection() { return Series.REDIRECTION.equals(series()); } /** * Whether this status code is in the HTTP series * { @link org.springframework.http.HttpStatus.Series#CLIENT_ERROR}. * This is a shortcut for checking the value of { @link #series()}. */ public boolean is4xxClientError() { return Series.CLIENT_ERROR.equals(series()); } /** * Whether this status code is in the HTTP series * { @link org.springframework.http.HttpStatus.Series#SERVER_ERROR}. * This is a shortcut for checking the value of { @link #series()}. */ public boolean is5xxServerError() { return Series.SERVER_ERROR.equals(series()); } /** * Returns the HTTP status series of this status code. * @see HttpStatus.Series */ public Series series() { return Series.valueOf(this); } /** * Return a string representation of this status code. */ @Override public String toString() { return Integer.toString(this.value); } /** * Return the enum constant of this type with the specified numeric value. * @param statusCode the numeric value of the enum to be returned * @return the enum constant with the specified numeric value * @throws IllegalArgumentException if this enum has no constant for the specified numeric value */ public static HttpStatus valueOf(int statusCode) { for (HttpStatus status : values()) { if (status.value == statusCode) { return status; } } throw new IllegalArgumentException("No matching constant for [" + statusCode + "]"); } /** * Enumeration of HTTP status series. *

Retrievable via { @link HttpStatus#series()}. */ public enum Series { INFORMATIONAL(1), SUCCESSFUL(2), REDIRECTION(3), CLIENT_ERROR(4), SERVER_ERROR(5); private final int value; Series(int value) { this.value = value; } /** * Return the integer value of this status series. Ranges from 1 to 5. */ public int value() { return this.value; } public static Series valueOf(int status) { int seriesCode = status / 100; for (Series series : values()) { if (series.value == seriesCode) { return series; } } throw new IllegalArgumentException("No matching constant for [" + status + "]"); } public static Series valueOf(HttpStatus status) { return valueOf(status.value); } } }

6. 测试示例:

    @ResponseBody
    @RequestMapping("/json")
    public Resp json(String token) {
        MemberDetails member = memberService.getMemberDetailsByToken(token);
        return Resp.success(member, 5L, 1, 3); //这里分页信息,请自己从PageHelper返回的数据中得到。参看下面注释内容:

        //Page page = PageHelper.startPage(1, 5);
        //MemberDetails member = memberService.getMemberDetailsByToken(token);
        //return Resp.success(member, page.getTotal(), page.getPageNum(), page.getPageSize());
    }

    @ResponseBody
    @RequestMapping("/json2")
    public Resp json2(String token) {
        MemberDetails member = memberService.getMemberDetailsByToken(token);
        Map ext = new HashMap<>();
        ext.put("msg", "扩展内容");
        return Resp.success("成功了", member, ext, 5L, 1, 3);
    }

    @ResponseBody
    @RequestMapping("/json3")
    public Resp json3(String token) {
        MemberDetails member = memberService.getMemberDetailsByToken(token);
        return Resp.fail();
    }

    @ResponseBody
    @RequestMapping("/json4")
    public Resp json4(String token) {
        MemberDetails member = memberService.getMemberDetailsByToken(token);
        Map ext = new HashMap<>();
        ext.put("msg", "扩展内容");
        return Resp.result("201", "成功了", member);
    }

    @ResponseBody
    @RequestMapping("/json5")
    public Resp json5(String token) {
        MemberDetails member = memberService.getMemberDetailsByToken(token);
        return Resp.success(member);
    }

    @ResponseBody
    @RequestMapping("/json6")
    public Resp json6(String token) {
        MemberDetails member = memberService.getMemberDetailsByToken(token);
        return Resp.httpStatus(HttpStatus.ACCEPTED, "成功了");
    }
 
  
7. 运行结果:
  • 访问:http://127.0.0.1:1230/json?token=123
    Spring统一返回Json工具类,带分页信息_第3张图片

  • 访问:http://127.0.0.1:1230/json2?token=123
    Spring统一返回Json工具类,带分页信息_第4张图片

  • 访问:http://127.0.0.1:1230/json3?token=123
    Spring统一返回Json工具类,带分页信息_第5张图片

  • 访问:http://127.0.0.1:1230/json4?token=123
    Spring统一返回Json工具类,带分页信息_第6张图片

  • 访问:http://127.0.0.1:1230/json5?token=123
    Spring统一返回Json工具类,带分页信息_第7张图片

  • 访问:http://127.0.0.1:1230/json6?token=123
    Spring统一返回Json工具类,带分页信息_第8张图片

更多用法,请查看Resp类里面的静态方法

后记:

  • 如果大家有更好的改进建议或代码,欢迎在评论留言反馈,谢谢!

原文地址:http://www.seifon.cn/2018/04/30/Spring统一返回Json工具类,带分页信息/

你可能感兴趣的:(Spring,Spring,Json)