zoukankan      html  css  js  c++  java
  • Restful API返回统一响应体 :restful api接口,返回统一响应体

    先建一个工具类如

    RestResponse.java
    package com.ibaiqi.news.sqgov.tool;
    import com.fasterxml.jackson.annotation.JsonFormat;
    import com.fasterxml.jackson.annotation.JsonInclude;
    
    import java.io.Serializable;
    import java.util.Date;
    
    /**
     *
     * @author wangyushuai@fang.com
     * @date 2018/9/26
     * REST请求响应工具类 ,在controller控制器中,做为接口返回值  return RestResponse.buildSuccess(articles);
     */
    public class RestResponse implements Serializable {
    
        private final static long serialVersionUID = 1L;
        /**
         * 成功
         */
        private final static int STATUS_SUCCESS = 200;
    
        /**
         * 代码错误
         */
        private final static int STATUS_ERROR_INTERNAL_SERVER_ERROR = 500;
    
        /**
         * 服务不可用(针对熔断&服务降级的情况)
         */
        private final static int STATUS_ERROR_SERVICE_UNAVAILIABLE = 503;
    
    
        private int status;
        //@JsonInclude(JsonInclude.Include.NON_NULL)//不为空时,返回
        private Object data;
        private String message;
    
        /**
         * 时间戳并格式化
         */
        @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss",locale = "lz",timezone = "GMT+8")
        private Date timestamp;
    
        /**
         * 程序耗时
         */
        //@JsonIgnore//不返回注解
        private long time;
    
        public RestResponse(int code, String message, Object data) {
            super();
            this.status = code;
            this.message = message;
            this.data = data;
        }
    
        /**
         * 请求成功
         * @param data
         * @return
         */
        public static RestResponse buildSuccess(Object data) {
            return new RestResponse(STATUS_SUCCESS, "success", data);
        }
    
    
        /**
         * 代码错误
         * @param data
         * @return
         */
        public static RestResponse buildError_InternalServerError(Object data) {
            return new RestResponse(STATUS_ERROR_INTERNAL_SERVER_ERROR, "error", data);
        }
    
        /**
         * 返回错误码(服务不可用时,返回此方法),但推荐直接使用异常类
         * @param data
         * @return
         */
        public static RestResponse buildError_ServiceUnavailable(Object data) {
            return new RestResponse(STATUS_ERROR_SERVICE_UNAVAILIABLE, "error", data);
        }
    
    //    public static RestResponse buildError(Object data) {
    //        return new RestResponse(STATUS_SUCCESS, "success", data);
    //    }
    
        public int getStatus() {
            return status;
        }
    
        public void setStatus(int status) {
            this.status = status;
        }
    
        public Object getData() {
            return data;
        }
    
        public void setData(Object data) {
            this.data = data;
        }
    
        public String getMessage() {
            return message;
        }
    
        public void setMessage(String message) {
            this.message = message;
        }
    
        public Date getTimestamp() {
            return new Date();
        }
    
        public void setTimestamp(Date timestamp) {
            this.timestamp = timestamp;
        }
    
        public String getTime() {
            return time + "ms";
        }
    
        public void setTime(long time) {
            this.time = time;
        }
    
    }
    

     2:控制器类controller 类中方法引用

    @RestController
    @RequestMapping("/api")
    @Api("政务要闻文章Controller接口")
    @CrossOrigin(origins = "*", maxAge = 3600)
    public class ArticlesController {
        @Resource
        ArticlesService articlesService;
    
        
        /**
         * 列出Articles且带上分页信息
         *
         * @return
         */
        @GetMapping("/V1/articlesResResult/{pageSize}")
        @ResponseBody
        @ApiOperation(value = "列出文章,且带分页信息", notes = "返回Articles对象的集合")
        public RestResponse articlesResResult(
                @ApiParam(name = "pageSize", value = "输入每页显示页数", defaultValue = "3", required = true) @PathVariable Integer pageSize
        ) {
    //        Map<String, Object> map = new HashMap<>();
            PageInfo<Articles> articles = articlesService.listArticles(1, pageSize);
    //        map.put("data",articles);
    //        map.put("msg","查询所有用户及分页信息成功");
            //        return  RestResponse.buildSuccess(map);
            return RestResponse.buildSuccess(articles);
    
        }
    }
    
    做产品的程序,才是好的程序员!
  • 相关阅读:
    @+id/和android:id的区别
    android.intent.action.MAIN 与 android.intent.category.LAUNCHER 的验证理解
    jQuery对象与dom对象相互转换
    javascript中apply和eval结合的强大用法
    公司项目学习杂烩
    c#(winform,webform通用)利用npoi将xls文件复制为xlsx文件(excel的修改,保存,包括excel2003-office2007+的处理)
    uploadfiy使用
    我都学了些什么
    给编程一个你热爱它的机会
    野心不能成就你,热爱却可以
  • 原文地址:https://www.cnblogs.com/asplover/p/14091228.html
Copyright © 2011-2022 走看看