HttpStatusEnum

CONTINUE(100, "Continue", "请继续发送请求的剩余部分"),

SWITCHING_PROTOCOLS(101, "Switching Protocols", "协议切换"),

PROCESSING(102, "Processing", "请求将继续执行"),

CHECKPOINT(103, "Checkpoint", "可以预加载"),

OK(200, "OK", "请求已经成功处理"),

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", "请重新发送请求"),

SEE_OTHER(303, "See Other", "请以Get方式请求另一个URI"),

NOT_MODIFIED(304, "Not Modified", "资源未改变"), 

USE_PROXY(305, "Use Proxy", "请通过Location域中的代理进行访问"),

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中指定的预期内容无法被服务器满足"),

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", "需要进行网络授权");

### 定义HTTP响应状态码的最佳实践 在Java中,将HTTP响应状态码定义为枚举类型是一种常见的最佳实践。通过这种方式可以提高代码的可读性和安全性,同时避免硬编码数值带来的潜在错误。 以下是基于提供的引用内容以及行业标准实现的方式: #### 枚举类型的定义 根据引用[^2]中的建议,枚举类名应该以`Enum`结尾,并且其成员应全部大写并用下划线分隔单词。因此,在定义HTTP响应状态码时,可以选择如下方式来创建一个名为`HttpStatusEnum`的枚举类型: ```java public enum HttpStatusEnum { OK(200, "OK"), NOT_FOUND(404, "Not Found"), INTERNAL_SERVER_ERROR(500, "Internal Server Error"); private final int code; private final String message; HttpStatusEnum(int code, String message) { this.code = code; this.message = message; } public int getCode() { return code; } public String getMessage() { return message; } } ``` 上述代码片段展示了如何构建一个简单的`HttpStatusEnum`枚举类型。它包含了三个典型的HTTP状态码及其对应的消息字符串。每个枚举实例都具有两个属性——整数形式的状态码和描述性的消息文本。 #### 使用场景示例 当处理HTTP请求返回的结果时,可以通过该枚举快速获取相应的状态信息而无需手动查找具体含义。例如下面展示了一个假设函数用于模拟服务器端逻辑判断后的结果输出过程: ```java import java.util.Optional; public class HttpExample { public static void main(String[] args) { Optional<HttpStatusEnum> resultStatus = processRequest(); if (resultStatus.isPresent()) { System.out.println("Response Code: " + resultStatus.get().getCode()); System.out.println("Message: " + resultStatus.get().getMessage()); } else { System.out.println("No valid response."); } } private static Optional<HttpStatusEnum> processRequest(){ // Simulate some condition that determines the outcome. boolean successConditionMet = true; if(successConditionMet){ return Optional.of(HttpStatusEnum.OK); }else{ return Optional.of(HttpStatusEnum.NOT_FOUND); } } } ``` 此程序段演示了如果条件满足则返回成功状态;反之,则报告资源未找到的情况[^3]。利用这种模式可以使业务更加清晰易懂同时也便于维护扩展新功能需求。 #### 抽象层次的选择 关于抽象层的设计提到过应当考虑适当级别的抽象度以便于理解和操作复杂的数据结构或者流程控制机制等问题[^4]。对于本案例而言,采用枚举代替原始整形变量存储http status codes正是遵循这一原则的具体体现之一—既保留必要的灵活性又不失简洁明了的特点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值