Accessing http status code constants

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)
    });

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]
    });

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){...}


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
}

Tags:

Javascript