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接口)例子]。

image

添加代码

项目增加文件如下图

image

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

image

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

image

总结

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

完整代码

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值