您的位置:首页 > Web前端 > JavaScript

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

2016-09-26 14:08 211 查看
后台在做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
@ResponseBody
public 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")
@ResponseBody
public ResponseData testResponseData() {
return ResponseData.ok().putDataValue("token", "XXXXXXXXXXXXXXXXXXXXXXX");
}

}

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



项目的完整地址:https://github.com/imchenglibin/spring-web-tutorial
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring web java webapp json api
相关文章推荐