二、后台实战——格式统一的Json返回

来源:互联网 发布:两大人工智能编程语言 编辑:程序博客网 时间:2024/06/08 10:29

后台在做API接口返回的时候往往需要统一格式,笔者在自己的几个项目中使用的Json格式如下:

{<span style="white-space:pre"></span>code: 200,<span style="white-space:pre"></span>message: "Ok",<span style="white-space:pre"></span>data:  {<span style="white-space:pre"></span>}}
code为返回的错误码

message为错误码对应的信息

data为具体返回实体

Java的代码实现如下

package com.xt.tutorial.utils;import java.util.HashMap;import java.util.Map;public class ResponseData {public static final String ERRORS_KEY = "errors";private final String message;private final int code;private final Map<String, Object> data = new HashMap<>();public String getMessage() {return message;}public int getCode() {return code;}public Map<String, Object> getData() {return data;}public ResponseData putDataValue(String key, Object value) {data.put(key, value);return this;}private ResponseData(int code, String message) {this.code = code;this.message = message;}public static ResponseData ok() {return new ResponseData(200, "Ok");}public static ResponseData notFound() {return new ResponseData(404, "Not Found");}public static ResponseData badRequest() {return new ResponseData(400, "Bad Request");}public static ResponseData forbidden() {return new ResponseData(403, "Forbidden");}public static ResponseData unauthorized() {return new ResponseData(401, "unauthorized");}public static ResponseData serverInternalError() {return new ResponseData(500, "Server Internal Error");}public static ResponseData customerError() {return new ResponseData(1001, "Customer Error");}}
添加具体用例:

package com.xt.tutorial.v1.controllers;import java.util.HashMap;import java.util.Map;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;import com.xt.tutorial.utils.ResponseData;@Controller@RequestMapping("/index")public class IndexController {@GetMapping@ResponseBodypublic Map<String, Object> index() {Map<String, Object> response = new HashMap<>();response.put("code", 200);response.put("message", "Ok");response.put("data", new HashMap<String, String>());return response;}@GetMapping("/test_response_data")@ResponseBodypublic ResponseData testResponseData() {return ResponseData.ok().putDataValue("token", "XXXXXXXXXXXXXXXXXXXXXXX");}}

右击工程【Run As->Maven build】


项目的完整地址:https://github.com/imchenglibin/spring-web-tutorial



0 0