访问 http 状态代码常量
Accessing http status code constants
我正在寻找Javascript中的http状态代码列表。它们是否在任何实现中定义?
我看了一下XMLHttpRequest
,但只找到了readyState
常量。
var xhr = new XMLHttpRequest();
console.log(xhr.DONE); //4
我正在寻找类似的东西
console.log(xhr.statusCodes.OK); //200
这显然在 xhr 对象上不存在。
对于节点.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)
});
Http 状态代码由互联网号码分配机构 (IANA) 维护,而 readyState
特定于XmlHttpRequest
。
因此,只需转到信誉良好的来源。维基百科文章应该足够了,因为这不是一个真正有争议的话题 - 或者,正如评论的那样,官方列表可以在这里找到
你也可以将你感兴趣的那些包装到一个javascript对象中。
var HttpCodes = {
success : 200,
notFound : 404
// etc
}
然后可以使用if(response == HttpCodes.success){...}
对于 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
}
您可以单独使用本机http2
库,以便使用常量提供 HTTP 状态数值。
示例:打字稿
常量.ts
import { constants } from 'http2'
export const HTTP_STATUS = Object.fromEntries(
Object.entries(constants)
.filter(([key]) => key.startsWith('HTTP_STATUS_'))
.map(([key, value]) => [key.replace('HTTP_STATUS_', ''), value])
)
示例.ts
import { HTTP_STATUS as statusCodes } from './Constants.ts'
// example
const httpStatus = statusCodes.OK // 200 (number)
const httpStatusB = statusCodes.UNAUTHORIZED // 401
示例:JavaScript
常量.js
const http2 = require('http2')
const HTTP_STATUS = Object.fromEntries(
Object.entries(http2.constants)
.filter(([key]) => key.startsWith('HTTP_STATUS_'))
.map(([key, value]) => [key.replace('HTTP_STATUS_', ''), value])
)
module.exports = { HTTP_STATUS }
示例.js
const statusCodes = require('./constants.js').HTTP_STATUS
// example
const httpStatus = statusCodes.OK // 200 (number)
const httpStatusB = statusCodes.UNAUTHORIZED // 401
对于 Angular,请使用:
import { HttpStatusCode } from '@angular/common/http';
console.log(HttpStatusCode.Ok);
相关文章:
- 从桌面读取python文件时高亮显示代码
- 如何将函数包装在函数中以避免代码重复
- 通过单击表单中的按钮,在代码生成中使用javascript生成字母数字代码
- 货币代码为欧元-金额的格式不应包含小数
- Regex代码只允许一个空格
- 如何将屏幕分辨率乘以 80%,然后在代码中使用
- 从var向代码隐藏函数传递值
- 如何动态插入jquery代码
- 如何在php变量中嵌入JQuery代码
- 为什么Javascript程序员更喜欢在代码中重复字符串作为常量,而不是使用枚举类型的对象
- Javascript 代码上的未终止字符串常量
- 是否值得优化 Javascript 代码用常量替换字符串
- 访问 http 状态代码常量
- 如何让常量变量在JavaScript代码中动态工作
- Selenium StaleElementReferenceException错误&页面加载完整代码不是常量.点
- IE10(在兼容模式下)在有效代码上生成SCRIPT1015:未终止字符串常量错误
- 正在生成定义常量的JS代码,被认为是不好的做法
- Javascript和服务器端代码之间存在重复的常量
- node.js和浏览器代码重用:将常量导入模块
- 如何处理同时应用于服务器和客户端代码的常量