你是如何编写Http请求响应内容的?

关注我,升职加薪少不了你!
几乎每个程序员都会遇到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;
    }
}

完事。
关注我,升职加薪少不了你!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

徐先生Paul

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值