关注我,升职加薪少不了你!
几乎每个程序员都会遇到Http请求响应内容,那它应该如何编写呢?今天小编就跟大家分享下这方面的内容吧。
这部分没什么好讲的,直接上代码吧。
首先,编写响应内容的枚举集-ResultEnum
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
/**
* @Author: Max
* @Date: 2021/8/6
* @Function:
*/
@AllArgsConstructor
@NoArgsConstructor
@Getter
public enum ResultEnum {
CONTINUE("100", "Continue", "请继续发送请求的剩余部分!"),
SWITCHING_PROTOCOLS("101", "Switching Protocols", "协议切换!"),
PROCESSING("102", "Processing", "请求将继续执行!"),
CHECKPOINT("103", "Checkpoint", "可以预加载!"),
SUCCESS("200", "success", "请求成功!"),
CREATED("201", "Created", "请求已经成功处理,并创建了资源!"),
ACCEPTED("202", "Accepted", "请求已经接受,等待执行!"),
NON_AUTHORITATIVE_INFORMATION("203", "Non-Authoritative Information", "请求已经成功处理,但是信息不是原始的!"),
NO_CONTENT("204", "No Content", "请求已经成功处理,没有内容需要返回!"),
RESET_CONTENT("205", "Reset Content", "请求已经成功处理,请重置视图!"),
PARTIAL_CONTENT("206", "Partial Content", "部分Get请求已经成功处理!"),
MULTI_STATUS("207", "Multi-Status", "请求已经成功处理,将返回XML消息体!"),
ALREADY_REPORTED("208", "Already Reported", "请求已经成功处理,一个DAV的绑定成员被前一个请求枚举,并且没有被再一次包括!"),
IM_USED("226", "IM Used", "请求已经成功处理,将响应一个或者多个实例!"),
MULTIPLE_CHOICES("300", "Multiple Choices", "提供可供选择的回馈!"),
MOVED_PERMANENTLY("301", "Moved Permanently", "请求的资源已经永久转移!"),
FOUND("302", "Found", "请重新发送请求!"),
// MOVED_TEMPORARILY(302, "Moved Temporarily", "!") 已经过时
SEE_OTHER("303", "See Other", "请以Get方式请求另一个URI!"),
NOT_MODIFIED("304", "Not Modified", "资源未改变!"),
USE_PROXY("305", "Use Proxy", "请通过Location域中的代理进行访问!"),
// 306在新版本的规范中被弃用
TEMPORARY_REDIRECT("307", "Temporary Redirect", "请求的资源临时从不同的URI响应请求!"),
RESUME_INCOMPLETE("308", "Resume Incomplete", "请求的资源已经永久转移!"),
BAD_REQUEST("400", "Bad Request", "请求错误,请修正请求!"),
UNAUTHORIZED("401", "Unauthorized", "没有被授权或者授权已经失效!"),
PAYMENT_REQUIRED("402", "Payment Required", "预留状态!"),
FORBIDDEN("403", "Forbidden", "请求被理解,但是拒绝执行!"),
NOT_FOUND("404", "Not Found", "资源未找到!"),
METHOD_NOT_ALLOWED("405", "Method Not Allowed", "请求方法不允许被执行!"),
NOT_ACCEPTABLE("406", "Not Acceptable", "请求的资源不满足请求者要求!"),
PROXY_AUTHENTICATION_REQUIRED("407", "Proxy Authentication Required", "请通过代理进行身份验证!"),
REQUEST_TIMEOUT("408", "Request Timeout", "请求超时!"),
CONFLICT("409", "Conflict", "请求冲突!"),
GONE("410", "Gone", "请求的资源不可用!"),
LENGTH_REQUIRED("411", "Length Required", "Content-Length未定义!"),
PRECONDITION_FAILED("412", "Precondition Failed", "不满足请求的先决条件!"),
REQUEST_ENTITY_TOO_LARGE("413", "Request Entity Too Large", "请求发送的实体太大!"),
REQUEST_URI_TOO_LONG("414", "Request-URI Too Long", "请求的URI超长!"),
UNSUPPORTED_MEDIA_TYPE("415", "Unsupported Media Type", "请求发送的实体类型不受支持!"),
REQUESTED_RANGE_NOT_SATISFIABLE("416", "Requested range not satisfiable", "Range指定的范围与当前资源可用范围不一致!"),
EXPECTATION_FAILED("417", "Expectation Failed", "请求头Expect中指定的预期内容无法被服务器满足!"),
UNPROCESSABLE_ENTITY("422", "Unprocessable Entity", "请求格式正确,但是由于含有语义错误,无法响应!"),
LOCKED("423", "Locked", "当前资源被锁定!"),
FAILED_DEPENDENCY("424", "Failed Dependency", "由于之前的请求发生错误,导致当前请求失败!"),
UPGRADE_REQUIRED("426", "Upgrade Required", "客户端需要切换到TLS1.0!"),
PRECONDITION_REQUIRED("428", "Precondition Required", "请求需要提供前置条件!"),
TOO_MANY_REQUESTS("429", "Too Many Requests", "请求过多!"),
REQUEST_HEADER_FIELDS_TOO_LARGE("431", "Request Header Fields Too Large", "请求头超大,拒绝请求!"),
INTERNAL_SERVER_ERROR("500", "Internal Server Error", "服务器内部错误!"),
NOT_IMPLEMENTED("501", "Not Implemented", "服务器不支持当前请求的部分功能!"),
BAD_GATEWAY("502", "Bad Gateway", "响应无效!"),
SERVICE_UNAVAILABLE("503", "Service Unavailable", "服务器维护或者过载,拒绝服务!"),
GATEWAY_TIMEOUT("504", "Gateway Timeout", "上游服务器超时!"),
HTTP_VERSION_NOT_SUPPORTED("505", "HTTP Version not supported", "不支持的HTTP版本!"),
VARIANT_ALSO_NEGOTIATES("506", "Variant Also Negotiates", "服务器内部配置错误!"),
INSUFFICIENT_STORAGE("507", "Insufficient Storage", "服务器无法完成存储请求所需的内容!"),
LOOP_DETECTED("508", "Loop Detected", "服务器处理请求时发现死循环!"),
BANDWIDTH_LIMIT_EXCEEDED("509", "Bandwidth Limit Exceeded", "服务器达到带宽限制!"),
NOT_EXTENDED("510", "Not Extended", "获取资源所需的策略没有被满足!"),
NETWORK_AUTHENTICATION_REQUIRED("511", "Network Authentication Required", "需要进行网络授权!");
private String code;
/**
* reason phase for English
*/
private String msgUS;
/**
* reason phase for Chinese
*/
private String msgCN;
public static ResultEnum success(ResultEnum resultEnum){
for (ResultEnum result : ResultEnum.values()) {
if(result.equals(resultEnum) && SUCCESS.equals(result)){
return result;
}
}
return ResultEnum.SUCCESS;
}
}
再编写响应内容的结果类Result。
import com.ims.serviceshny.common.enums.ResultEnum;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author: Max
* @Date: 2021/8/6
* @Function: 响应内容的结果类
*/
@NoArgsConstructor
@AllArgsConstructor
@Data
@Builder
public class Result {
/**
* 状态码
*/
private String code;
/**
* 状态码描述-英文
*/
private String msgUS;
/**
* 状态码描述-中文
*/
private String msgCN;
/**
* 结果数据
*/
private Object data;
public Result(String code, String msgCN, String msgUS){
this.code = code;
this.msgCN = msgCN;
this.msgUS = msgUS;
}
public static Result getResultData(Object data, ResultEnum resultEnum){
Result result = getResult(data, resultEnum);
return result;
}
public static Result getResult(Object obj, ResultEnum resultEnum){
Result result = Result.builder()
.code(resultEnum.getCode())
.msgCN(resultEnum.getMsgCN())
.msgUS(resultEnum.getMsgUS())
.data(obj)
.build();
return result;
}
}
完事。
关注我,升职加薪少不了你!