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);
    
        }
    }
    
    做产品的程序,才是好的程序员!
  • 相关阅读:
    flask框架+上传文件接口实战【软件测试培训】【多测师_王sir】
    读取Excel中的视频文件地址+requests库下载后存入本地文件夹【软件测试培训】【多测师_王sir】
    UI和接口自动化中的设计模式:单例模式【软件测试培训】【多测师_王sir】
    Python+BeautifulReport生成完美的接口自动化测试报告【多测师_王sir】
    Linux命令中查找以.log结尾文件中不包含某个特定字符串这行的内容【多测师_王sir】
    查询多条数据
    django登录装饰接口封装
    django使用redis作为session缓存
    tinymce配置
    django重写authcenticate方法兼容用户、邮箱、密码认证登录
  • 原文地址:https://www.cnblogs.com/asplover/p/14091228.html
Copyright © 2011-2022 走看看