我正在寻找 Javascript 中的 http 状态代码列表。它们是否在任何实现中定义?
我看过XMLHttpRequest
,但只找到了readyState
常量。
var xhr = new XMLHttpRequest();
console.log(xhr.DONE); //4
我正在寻找类似的东西
console.log(xhr.statusCodes.OK); //200
这显然在 xhr 对象上不存在。
我正在寻找 Javascript 中的 http 状态代码列表。它们是否在任何实现中定义?
我看过XMLHttpRequest
,但只找到了readyState
常量。
var xhr = new XMLHttpRequest();
console.log(xhr.DONE); //4
我正在寻找类似的东西
console.log(xhr.statusCodes.OK); //200
这显然在 xhr 对象上不存在。
对于 node.js,您可以使用模块node-http-status ( github )。
这是一个例子:
var HttpStatus = require('http-status-codes');
response
.status(HttpStatus.OK)
.send('ok');
response
.status(HttpStatus.INTERNAL_SERVER_ERROR)
.send({
error: HttpStatus.getStatusText(HttpStatus.INTERNAL_SERVER_ERROR)
});
对于 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]
});
这有效...
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
}