关于c++:CC气象数据中心实战手把手教你做工业级项目

42次阅读

共计 2640 个字符,预计需要花费 7 分钟才能阅读完成。

C/C++ 气象数据中心实战,手把手教你做工业级我的项目

为什么要对 SpringBoot 返回对立的标准格局
在默认情况下,SpringBoot 的返回格局常见的有三种:

第一种:返回 String

@GetMapping(“/hello”)
public String getStr(){
return “hello,javadaily”;
}
复制代码
此时调用接口获取到的返回值是这样:

hello,javadaily
复制代码
第二种:返回自定义对象
download
@GetMapping(“/aniaml”)
public Aniaml getAniaml(){
Aniaml aniaml = new Aniaml(1,”pig”);
return aniaml;
}
复制代码
此时调用接口获取到的返回值是这样:

{
“id”: 1,
“name”: “pig”
}
复制代码
第三种:接口异样

@GetMapping(“/error”)
public int error(){

int i = 9/0;
return i;

}
复制代码
此时调用接口获取到的返回值是这样:

{download
“timestamp”: “2021-07-08T08:05:15.423+00:00”,
“status”: 500,
“error”: “Internal Server Error”,
“path”: “/wrong”
}
复制代码
基于以上种种情况,如果你和前端开发人员联调接口她们就会很懵逼,因为咱们没有给他一个对立的格局,前端人员不知道如何处理返回值。

还有甚者,有的同学比如小张喜爱对后果进行封装,他使用了 Result 对象,小王也喜爱对后果进行包装,然而他却使用的是 Response 对象,当出现这种情况时我相信前端人员肯定会抓狂的。

所以咱们我的项目中是需要定义一个对立的标准返回格局的。

定义返回标准格局
一个标准的返回格局至多蕴含 3 部分:

status 状态值:由后端对立定义各种返回后果的状态码
message 描述:本次接口调用的后果描述
data 数据:本次返回的数据。
{
“status”:”100″,
“message”:” 操作胜利 ”,
“data”:”hello,javadaily”
}
复制代码
当然也可能按需加入其余扩大值,比如咱们就在返回对象中增加了接口调用工夫

timestamp: 接口调用工夫
定义返回对象
@Datadownload
public class ResultData<T> {
/* 后果状态 , 具体状态码参见 ResultData.java/
private int status;
private String message;
private T data;
private long timestamp ;
public ResultData (){

this.timestamp = System.currentTimeMillis();

}
public static ResultData success(T data) {

ResultData resultData = new ResultData<>();
resultData.setStatus(ReturnCode.RC100.getCode());
resultData.setMessage(ReturnCode.RC100.getMessage());
resultData.setData(data);
return resultData;

}
public static ResultData fail(int code, String message) {

ResultData resultData = new ResultData<>();
resultData.setStatus(code);
resultData.setMessage(message);
return resultData;

}
}download
复制代码
定义状态码
public enum ReturnCode {

/** 操作胜利 **/
RC100(100,"操作胜利"),
/** 操作失败 **/
RC999(999,"操作失败"),
/** 服务限流 **/
 文件名称:
 文件大小:
 下载声明:本站部分资源来自于网络收集,若侵犯了你的隐私或版权,请及时联系我们删除有关信息。
下载地址:
(http://www.51xuebc.com/thread-387-1-1.html) RC200(200,"服务开启限流保护, 请稍后再试!"), /** 服务降级 **/ RC201(201,"服务开启降级保护, 请稍后再试!"), /** 热点参数限流 **/ RC202(202,"热点参数限流, 请稍后再试!"), /** 零碎规定不满足 **/ RC203(203,"零碎规定不满足申请, 请稍后再试!"), /** 授权规定不通过 **/ RC204(204,"授权规定不通过, 请稍后再试!"), /**access_denied**/ RC403(403,"无拜访权限, 请联系管理员授予权限"), /**access_denied**/ RC401(401,"匿名用户拜访无权限资源时的异样"), /** 服务异样 **/ RC500(500,"零碎异样,请稍后重试"), INVALID_TOKEN(2001,"拜访令牌不非法"), ACCESS_DENIED(2003,"没有权限拜访该资源"), CLIENT_AUTHENTICATION_FAILED(1001,"客户端认证失败"), USERNAME_OR_PASSWORD_ERROR(1002,"用户名或明码谬误"), UNSUPPORTED_GRANT_TYPE(1003, "不反对的认证模式"); /** 自定义状态码 **/ private final int code; /** 自定义描述 **/ private final String message; ReturnCode(int code, String message){ this.code = code; this.message = message; } public int getCode() {return code;} public String getMessage() {return message;}

}
复制代码
对立返回格局
@GetMapping(“/hello”)
public ResultData getStr(){

return ResultData.success("hello,javadaily");

}
复制代码
此时调用接口获取到的返回值是这样:

{
“status”: 100,
“message”: “hello,javadaily”,
“data”: null,
“timestamp”: 1625736481648,
“httpStatus”: 0
}

download

正文完
 0