[定义] 关于网络状态码的工程标准
内容
我相信大多数写http api的时候,关于网络的状态码大家都有各自的定义,现在有一个好的库来定义各种各样的情况,方便大家在写api的时候返回合理的状态码
代码
# Informational Responses
100:
message: "Continue"
category: "Informational Responses"
description: "This interim response indicates that everything so far is OK \
and that the client should continue with the request or ignore \
it if it is already finished."
101:
message: "Switching Protocol"
category: "Informational Responses"
description: "This code is sent in response to an Upgrade request header by \
the client, and indicates the protocol the server is switching to."
102:
message: "Processing (WebDAV)"
category: "Informational Responses"
description: "This code indicates that the server has received and is \
processing the request, but no response is available yet."
200:
message: "OK"
category: "Successful Responses"
description: "The request has succeeded. The meaning of a success varies \
depending on the HTTP method:
GET: The resource has been fetched and is transmitted in the \
message body.
HEAD: The entity headers are in the message body.
PUT or POST: The resource describing the result of the action is \
transmitted in the message body.
TRACE: The message body contains the request message as received \
by the server"
# Successful Responses
201:
message: "Created"
category: "Successful Responses"
description: "The request has succeeded and a new resource has been created as \
a result of it. This is typically the response sent after a POST \
request, or after some PUT requests."
202:
message: "Accepted"
category: "Successful Responses"
description: "The request has been received but not yet acted upon. It is \
non-committal, meaning that there is no way in HTTP to later send \
an asynchronous response indicating the outcome of processing the \
request. It is intended for cases where another process or server \
handles the request, or for batch processing."
203:
message: "Non-Authoritative Information"
category: "Successful Responses"
description: "This response code means returned meta-information set is not \
exact set as available from the origin server, but collected from \
a local or a third party copy. Except this condition, 200 OK \
response should be preferred instead of this response."
204:
message: "No Content"
category: "Successful Responses"
description: "There is no content to send for this request, but the headers \
may be useful. The user-agent may update its cached headers for \
this resource with the new ones."
205:
message: "Reset Content"
category: "Successful Responses"
description: "This response code is sent after accomplishing request to tell \
user agent reset document view which sent this request."
206:
message: "Partial Content"
category: "Successful Responses"
description: "This response code is used because of range header sent by the \
client to separate download into multiple streams."
207:
message: "Multi-Status (WebDav)"
category: "Successful Responses"
description: "A Multi-Status response conveys information about multiple \
resources in situations where multiple status codes might be \
appropriate."
208:
message: "Multi-Status (WebDav)"
category: "Successful Responses"
description: "Used inside a DAV: propstat response element to avoid enumerating \
the internal members of multiple bindings to the same collection \
repeatedly."
226:
message: "IM Used (HTTP Delta encoding)"
category: "Successful Responses"
description: "The server has fulfilled a GET request for the resource, and the \
response is a representation of the result of one or more \
instance-manipulations applied to the current instance."
# Redirection Messages
300:
message: "Multiple Choice"
category: "Redirection Messages"
description: "The request has more than one possible response. The user-agent \
or user should choose one of them. There is no standardized way \
of choosing one of the responses."
301:
message: "Moved Permanently"
category: "Redirection Messages"
description: "This response code means that the URI of the requested resource \
has been changed. Probably, the new URI would be given in the \
response."
302:
message: "Found"
category: "Redirection Messages"
description: "This response code means that the URI of requested resource has \
been changed temporarily. New changes in the URI might be made \
in the future. Therefore, this same URI should be used by the \
client in future requests."
303:
message: "See Other"
category: "Redirection Messages"
description: "The server sent this response to direct the client to get the \
requested resource at another URI with a GET request."
304:
message: "Not Modified"
category: "Redirection Messages"
description: "This is used for caching purposes. It tells the client that the \
response has not been modified, so the client can continue to \
use the same cached version of the response."
305:
message: "Use Proxy"
category: "Redirection Messages"
description: "Was defined in a previous version of the HTTP specification to \
indicate that a requested response must be accessed by a proxy. \
It has been deprecated due to security concerns regarding in-band \
configuration of a proxy."
306:
message: "Unused"
category: "Redirection Messages"
description: "This response code is no longer used, it is just reserved \
currently. It was used in a previous version of the HTTP 1.1 \
specification."
307:
message: "Temporary Redirect"
category: "Redirection Messages"
description: "The server sends this response to direct the client to get the \
requested resource at another URI with same method that was used \
in the prior request. This has the same semantics as the 302 Found \
HTTP response code, with the exception that the user agent must \
not change the HTTP method used: If a POST was used in the first \
request, a POST must be used in the second request."
308:
message: "Permanent Redirect"
category: "Redirection Messages"
description: "This means that the resource is now permanently located at another \
URI, specified by the Location: HTTP Response header. This has \
the same semantics as the 301 Moved Permanently HTTP response \
code, with the exception that the user agent must not change the \
HTTP method used: If a POST was used in the first request, a POST \
must be used in the second request."
# Client Error Responses
400:
message: "Bad Request"
category: "Client Error Responses"
description: "This response means that server could not understand the request \
due to invalid syntax."
401:
message: "Unauthorized"
category: "Client Error Responses"
description: "Although the HTTP standard specifies 'unauthorized', semantically \
this response means 'unauthenticated'. That is, the client must \
authenticate itself to get the requested response."
402:
message: "Payment Required"
category: "Client Error Responses"
description: "This response code is reserved for future use. Initial aim for \
creating this code was using it for digital payment systems \
however this is not used currently."
403:
message: "Forbidden"
category: "Client Error Responses"
description: "The client does not have access rights to the content, i.e. they \
are unauthorized, so server is rejecting to give proper response. \
Unlike 401, the client's identity is known to the server."
404:
message: "Not Found"
category: "Client Error Responses"
description: "The server can not find requested resource. In the browser, this \
means the URL is not recognized. In an API, this can also mean \
that the endpoint is valid but the resource itself does not exist. \
Servers may also send this response instead of 403 to hide the \
existence of a resource from an unauthorized client. This response \
code is probably the most famous one due to its frequent occurence \
on the web."
405:
message: "Method Not Allowed"
category: "Client Error Responses"
description: "The request method is known by the server but has been disabled \
and cannot be used. For example, an API may forbid DELETE-ing a \
resource. The two mandatory methods, GET and HEAD, must never be \
disabled and should not return this error code."
406:
message: "Not Acceptable"
category: "Client Error Responses"
description: "This response is sent when the web server, after performing \
server-driven content negotiation, doesn't find any content \
following the criteria given by the user agent."
407:
message: "Proxy Authentication Required"
category: "Client Error Responses"
description: "This is similar to 401 but authentication is needed to be done \
by a proxy."
408:
message: "Request Timeout"
category: "Client Error Responses"
description: "This response is sent on an idle connection by some servers, \
even without any previous request by the client. It means that \
the server would like to shut down this unused connection. This \
response is used much more since some browsers, like Chrome, \
Firefox 27+, or IE9, use HTTP pre-connection mechanisms to speed \
up surfing. Also note that some servers merely shut down the \
connection without sending this message."
409:
message: "Conflict"
category: "Client Error Responses"
description: "This response is sent when a request conflicts with the current \
state of the server."
410:
message: "Gone"
category: "Client Error Responses"
description: "This response would be sent when the requested content has been \
permanently deleted from server, with no forwarding address. \
Clients are expected to remove their caches and links to the \
resource. The HTTP specification intends this status code to be \
used for 'limited-time, promotional services'. APIs should not \
feel compelled to indicate resources that have been deleted with \
this status code."
411:
message: "Length Required"
category: "Client Error Responses"
description: "Server rejected the request because the Content-Length header \
field is not defined and the server requires it."
412:
message: "Precondition Failed"
category: "Client Error Responses"
description: "The client has indicated preconditions in its headers which the \
server does not meet."
413:
message: "Payload Too Large"
category: "Client Error Responses"
description: "Request entity is larger than limits defined by server; the server \
might close the connection or return an Retry-After header field."
414:
message: "URI Too Long"
category: "Client Error Responses"
description: "Request entity is larger than limits defined by server; the server \
might close the connection or return an Retry-After header field."
415:
message: "Unsupported Media Type"
category: "Client Error Responses"
description: "The media format of the requested data is not supported by the \
server, so the server is rejecting the request."
416:
message: "Requested Range Not Satisfiable"
category: "Client Error Responses"
description: "The range specified by the Range header field in the request \
can't be fulfilled; it's possible that the range is outside the \
size of the target URI's data."
417:
message: "Expectation Failed"
category: "Client Error Responses"
description: "This response code means the expectation indicated by the Expect \
request header field can't be met by the server."
418:
message: "I'm a teapot"
category: "Client Error Responses"
description: "The server refuses the attempt to brew coffee with a teapot."
421:
message: "Misdirected Request"
category: "Client Error Responses"
description: "The request was directed at a server that is not able to produce \
a response. This can be sent by a server that is not configured \
to produce responses for the combination of scheme and authority \
that are included in the request URI."
422:
message: "Unprocessable Entity (WebDAV)"
category: "Client Error Responses"
description: "The request was well-formed but was unable to be followed due to \
semantic errors."
423:
message: "Locked (WebDAV)"
category: "Client Error Responses"
description: "The resource that is being accessed is locked."
424:
message: "Failed Dependency (WebDAV)"
category: "Client Error Responses"
description: "The request failed due to failure of a previous request."
426:
message: "Upgrade Required"
category: "Client Error Responses"
description: "The server refuses to perform the request using the current \
protocol but might be willing to do so after the client upgrades \
to a different protocol. The server sends an Upgrade header in a \
426 response to indicate the required protocol(s)."
428:
message: "Precondition Required"
category: "Client Error Responses"
description: "The origin server requires the request to be conditional. Intended \
to prevent the 'lost update' problem, where a client GETs a resource's \
state, modifies it, and PUTs it back to the server, when meanwhile a \
third party has modified the state on the server, leading to a \
conflict."
429:
message: "Too Many Requests"
category: "Client Error Responses"
description: "The user has sent too many requests in a given amount of time \
('rate limiting')."
431:
message: "Request Header Fields Too Large"
category: "Client Error Responses"
description: "The server is unwilling to process the request because its header \
fields are too large. The request MAY be resubmitted after reducing \
the size of the request header fields."
451:
message: "Unavailable For Legal Reasons"
category: "Client Error Responses"
description: "The user requests an illegal resource, such as a web page censored \
by a government."
# Server Error Responses
500:
message: "Internal Server Error"
category: "Server Error Responses"
description: "The server has encountered a situation it doesn't know how to \
handle."
501:
message: "Not Implemented"
category: "Server Error Responses"
description: "The request method is not supported by the server and cannot be \
handled. The only methods that servers are required to support \
(and therefore that must not return this code) are GET and HEAD."
502:
message: "Bad Gateway"
category: "Server Error Responses"
description: "This error response means that the server, while working as a \
gateway to get a response needed to handle the request, got an \
invalid response."
503:
message: "Service Unavailable"
category: "Server Error Responses"
description: "The server is not ready to handle the request. Common causes are \
a server that is down for maintenance or that is overloaded. Note \
that together with this response, a user-friendly page explaining \
the problem should be sent. This responses should be used for \
temporary conditions and the Retry-After: HTTP header should, \
if possible, contain the estimated time before the recovery of \
the service. The webmaster must also take care about the \
caching-related headers that are sent along with this response, \
as these temporary condition responses should usually not be \
cached."
504:
message: "Gateway Timeout"
category: "Server Error Responses"
description: "This error response is given when the server is acting as a \
gateway and cannot get a response in time."
505:
message: "HTTP Version Not Supported"
category: "Server Error Responses"
description: "The HTTP version used in the request is not supported by the server."
506:
message: "Variant Also Negotiates"
category: "Server Error Responses"
description: "The server has an internal configuration error: transparent \
content negotiation for the request results in a circular reference."
507:
message: "Insufficient Storage"
category: "Server Error Responses"
description: "The server has an internal configuration error: the chosen \
variant resource is configured to engage in transparent content \
negotiation itself, and is therefore not a proper end point in \
the negotiation process."
508:
message: "Loop Detected (WebDAV)"
category: "Server Error Responses"
description: "The server detected an infinite loop while processing the request."
510:
message: "Not Extended"
category: "Server Error Responses"
description: "Further extensions to the request are required for the server to \
fulfill it."
511:
message: "Network Authentication Required"
category: "Server Error Responses"
description: "The 511 status code indicates that the client needs to authenticate \
分析
400 - 500 定义为client 错误
500 + 定义为server 错误
对于不同的错误,要区分不同的状态码来解读
引用
- 原文作者:大鱼
- 原文链接:https://brucedone.com/archives/1181/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. 进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。