spring boot 接口返回值封装

匿名 (未验证) 提交于 2019-12-02 23:38:02
版权声明:版权所有,未经许可,禁止转载! https://blog.csdn.net/weixin_43031412/article/details/90763012

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

添加代码

项目增加文件如下图

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

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

总结

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

完整代码

文章来源: https://blog.csdn.net/weixin_43031412/article/details/90763012
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!