Reputation: 35213
I'm looking for a list of http status codes in Javascript. Are they defined in any implementation?
I've had a look at XMLHttpRequest
, but only found readyState
constants.
var xhr = new XMLHttpRequest();
console.log(xhr.DONE); //4
I'm looking for something like
console.log(xhr.statusCodes.OK); //200
Which obviously doesn't exist on the xhr object.
Upvotes: 46
Views: 50483
Reputation: 1
You can also use http-errors
package:
import createHttpError from 'http-errors';
const error = createHttpError.Unauthorized();
// error.message - "Unauthorized", error.status = 401
Upvotes: 0
Reputation: 4136
For Angular, please use:
import { HttpStatusCode } from '@angular/common/http';
console.log(HttpStatusCode.Ok);
Upvotes: 3
Reputation: 1028
You can just use the native http2
library by itself for the purpose of using a constant to supply a HTTP Status numeric value.
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])
)
import { HTTP_STATUS as statusCodes } from './Constants.ts'
// example
const httpStatus = statusCodes.OK // 200 (number)
const httpStatusB = statusCodes.UNAUTHORIZED // 401
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 }
const statusCodes = require('./constants.js').HTTP_STATUS
// example
const httpStatus = statusCodes.OK // 200 (number)
const httpStatusB = statusCodes.UNAUTHORIZED // 401
Upvotes: 3
Reputation: 373
For Node.js, you can use http
and http2
libraries together.
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]
});
Upvotes: 16
Reputation: 1505
This works...
require HTTP = 'http'
Using the built in HTTP packages, which personally I prefer to having to load a package via 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
}
It generates this...
{
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
}
Upvotes: 11
Reputation: 3079
For node.js you can use the module node-http-status (github).
This is an example:
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)
});
Upvotes: 38
Reputation: 136134
Http status codes are maintained by the Internet Assigned Numbers Authority (IANA), whereas readyState
is specific to XmlHttpRequest
.
Therefore just go to a reputable source. The wikipedia article should suffice as this is not really a contentious topic - or, as commented, the official list can be found here
You could also wrap those you are interested in into a javascript object
var HttpCodes = {
success : 200,
notFound : 404
// etc
}
usage could then be if(response == HttpCodes.success){...}
Upvotes: 18