欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

spring boot 接口返回值封装 - qikegu.com

程序员文章站 2022-05-03 09:16:11
...

Spring Boot 集成教程

相关推荐

spring boot 接口返回值封装


概述

rest接口会返回各种各样的数据,如果对接口的格式不加约束,很容易造成混乱。

在实际项目中,一般会把结果放在一个封装类中,封装类中包含http状态值,状态消息,以及实际的数据。

本篇实现一个结果的封装类。

封装类代码

Result.java

public class Result implements Serializable {

    @SuppressWarnings("unused")
    private static final org.slf4j.Logger log = LoggerFactory.getLogger(Result.class);

    private static final long serialVersionUID = -1802122468331526708L;
    private int status = -1;
    private String message = "待处理";
    private Map<String, Object> data = new HashMap<String, Object>();

    public Result(){}

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

    public int getStatus() {
        return status;
    }

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

    public String getMessage() {
        return message;
    }

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

    public Map<String, Object> getData() {
        return data;
    }

    public void setData(Map<String, Object> data) {
        this.data = data;
    }

    public void putData(String key, Object value) {
        data.put(key, value);
    }

    public void removeData(String key) {
        data.remove(key);
    }

    @Override
    public String toString() {
        return "Result{" +
                "status=" + status +
                ", message='" + message + '\'' +
                ", data=" + data +
                '}';
    }
}

复制

解释

代码应该很好懂,主要是3个成员:

  • status – 状态值,应该对应于http的状态值(200,404等等)
  • messsage – 状态消息,如“页面未找到”
  • data – 是一个hashmap,可放入键值对

下面会创建一个实际项目来演示Result封装类的用法。

创建项目

创建spring boot项目

打开Eclipse,创建spring boot的spring starter project项目,选择菜单:File > New > Project ...,弹出对话框,选择:Spring Boot > Spring Starter Project,在配置依赖时,勾选web,如不清楚怎样创建spring boot项目,参照教程: [spring boot hello world (restful接口)例子]。

spring boot 接口返回值封装 - qikegu.com

添加代码

项目增加文件如下图

spring boot 接口返回值封装 - qikegu.com

Result.java文件已经在上面说明过。

控制类HelloController.java

HelloController控制类实现一个接口,用于测试封装类:

@RestController
public class HelloController {

    @RequestMapping(value="/hello", method = RequestMethod.GET, produces="application/json")
    public ResponseEntity<Result> hello(@RequestParam(value="bad", required=false, defaultValue="false") boolean bad) {

        // 结果封装类对象
        Result res = new Result(200, "ok");

        if(bad) {
            res.setStatus(400);
            res.setMessage("Bad request");

            // ResponseEntity是响应实体泛型,通过它可以设置http响应的状态值,此处返回400
            return new ResponseEntity<Result>(res, HttpStatus.BAD_REQUEST);
        }

        // 把结果数据放进封装类
        res.putData("words", "Hello world!");

        // ResponseEntity是响应实体泛型,通过它可以设置http响应的状态值,此处返回200
        return ResponseEntity.ok(res);
    }
}

复制

解释

我们把返回的“Hellow world!”字符串放进Result封装类返回,同时为使http响应头部的状态值与Result中的状态值一致,使用ResponseEntity设置状态值。

当请求/hello,返回200;请求/hello?bad=true,返回400。

运行

Eclipse左侧,在项目根目录上点击鼠标右键弹出菜单,选择:run as -> spring boot app运行程序。 打开Postman访问接口,运行结果如下:

当请求/hello,返回200

spring boot 接口返回值封装 - qikegu.com

请求/hello?bad=true,返回400

spring boot 接口返回值封装 - qikegu.com

总结

本文介绍了结果封装类,供大家在实践中参考。

完整代码


Doc navigation

← spring boot集成mybatis(3) - mybatis generator 配置

spring boot输入数据校验(validation) →