内容

我相信大多数写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://github.com/shobrook/statcode