我正在寻找Javascript中的http状态代码列表。它们是否在任何实施中定义?
我查看了XMLHttpRequest
,但只发现了readyState
个常量。
var xhr = new XMLHttpRequest();
console.log(xhr.DONE); //4
我正在寻找像
这样的东西console.log(xhr.statusCodes.OK); //200
xhr对象显然不存在。
答案 0 :(得分:6)
Http状态代码由互联网号码分配机构(IANA)维护,而readyState
特定于XmlHttpRequest
。
因此,请访问信誉良好的来源。 wikipedia article应该足够了,因为这不是一个有争议的主题 - 或者,如评论所述,可以找到官方列表here
你也可以将你感兴趣的人包装成一个javascript对象
var HttpCodes = {
success : 200,
notFound : 404
// etc
}
用法可以是if(response == HttpCodes.success){...}
答案 1 :(得分:3)
对于 Node.js,您可以同时使用 http
和 http2
库。
const statusCodes = require('http').STATUS_CODES;
const httpConstants = require('http2').constants;
response
.status(httpConstants.HTTP_STATUS_OK)
.send(statusCodes[httpConstants.HTTP_STATUS_OK]);
response
.status(httpConstants.HTTP_STATUS_INTERNAL_SERVER_ERROR)
.send({
error: statusCodes[httpConstants.HTTP_STATUS_INTERNAL_SERVER_ERROR]
});
答案 2 :(得分:2)
这有效...
require HTTP = 'http'
使用内置的HTTP程序包,我个人更喜欢通过NPM加载程序包。
static get HTTP_NAMED_STATUS_CODES() {
this._HTTP_NAMED_STATUS_CODES = this._HTTP_NAMED_STATUS_CODES || (() => {
const httpCodes = {}
Object.keys(HTTP.STATUS_CODES).forEach((code) => {
httpCodes[HTTP.STATUS_CODES[code].toUpperCase().replace(/ /g,"_").replace(/-/g,"_").replace(/'/g,"")] = parseInt(code)
})
return Object.freeze(httpCodes)
})();
return this._HTTP_NAMED_STATUS_CODES
}
它会生成此...
{
CONTINUE: 100,
SWITCHING_PROTOCOLS: 101,
PROCESSING: 102,
EARLY_HINTS: 103,
OK: 200,
CREATED: 201,
ACCEPTED: 202,
NON_AUTHORITATIVE_INFORMATION: 203,
NO_CONTENT: 204,
RESET_CONTENT: 205,
PARTIAL_CONTENT: 206,
MULTI_STATUS: 207,
ALREADY_REPORTED: 208,
IM_USED: 226,
MULTIPLE_CHOICES: 300,
MOVED_PERMANENTLY: 301,
FOUND: 302,
SEE_OTHER: 303,
NOT_MODIFIED: 304,
USE_PROXY: 305,
TEMPORARY_REDIRECT: 307,
PERMANENT_REDIRECT: 308,
BAD_REQUEST: 400,
UNAUTHORIZED: 401,
PAYMENT_REQUIRED: 402,
FORBIDDEN: 403,
NOT_FOUND: 404,
METHOD_NOT_ALLOWED: 405,
NOT_ACCEPTABLE: 406,
PROXY_AUTHENTICATION_REQUIRED: 407,
REQUEST_TIMEOUT: 408,
CONFLICT: 409,
GONE: 410,
LENGTH_REQUIRED: 411,
PRECONDITION_FAILED: 412,
PAYLOAD_TOO_LARGE: 413,
URI_TOO_LONG: 414,
UNSUPPORTED_MEDIA_TYPE: 415,
RANGE_NOT_SATISFIABLE: 416,
EXPECTATION_FAILED: 417,
IM_A_TEAPOT: 418,
MISDIRECTED_REQUEST: 421,
UNPROCESSABLE_ENTITY: 422,
LOCKED: 423,
FAILED_DEPENDENCY: 424,
TOO_EARLY: 425,
UPGRADE_REQUIRED: 426,
PRECONDITION_REQUIRED: 428,
TOO_MANY_REQUESTS: 429,
REQUEST_HEADER_FIELDS_TOO_LARGE: 431,
UNAVAILABLE_FOR_LEGAL_REASONS: 451,
INTERNAL_SERVER_ERROR: 500,
NOT_IMPLEMENTED: 501,
BAD_GATEWAY: 502,
SERVICE_UNAVAILABLE: 503,
GATEWAY_TIMEOUT: 504,
HTTP_VERSION_NOT_SUPPORTED: 505,
VARIANT_ALSO_NEGOTIATES: 506,
INSUFFICIENT_STORAGE: 507,
LOOP_DETECTED: 508,
BANDWIDTH_LIMIT_EXCEEDED: 509,
NOT_EXTENDED: 510,
NETWORK_AUTHENTICATION_REQUIRED: 511
}