What is http-status-codes?
The http-status-codes npm package provides an easy-to-use collection of HTTP status codes and reason phrases, which are useful when writing server-side code. It helps developers to avoid hardcoding numeric status codes and instead use descriptive constants, improving code readability and maintainability.
What are http-status-codes's main functionalities?
Status Code Enumeration
Provides an enumeration of HTTP status codes, allowing developers to use descriptive constants instead of numeric codes.
const { StatusCodes } = require('http-status-codes');
console.log(StatusCodes.OK); // 200
console.log(StatusCodes.NOT_FOUND); // 404
console.log(StatusCodes.INTERNAL_SERVER_ERROR); // 500
Reason Phrase Lookup
Allows developers to get the standard reason phrase for a given HTTP status code.
const { getReasonPhrase } = require('http-status-codes');
console.log(getReasonPhrase(200)); // 'OK'
console.log(getReasonPhrase(404)); // 'Not Found'
console.log(getReasonPhrase(500)); // 'Internal Server Error'
Status Code Lookup
Enables developers to retrieve the numeric status code for a given reason phrase.
const { getStatusCode } = require('http-status-codes');
console.log(getStatusCode('OK')); // 200
console.log(getStatusCode('Not Found')); // 404
console.log(getStatusCode('Internal Server Error')); // 500
Other packages similar to http-status-codes
statuses
A utility to interact with HTTP status codes. It provides similar functionality to http-status-codes, allowing for both numeric code and text message retrieval. It also supports looking up codes based on the message.
http-codes
Another simple package that provides HTTP status codes and messages. It is similar to http-status-codes but with a smaller footprint, offering a basic mapping between codes and their default messages.
http-status-codes
Constants enumerating the HTTP status codes. Based on the Java Apache HttpStatus API.
All status codes defined in RFC1945 (HTTP/1.0), RFC2616 (HTTP/1.1), RFC2518 (WebDAV), RFC6585 (Additional HTTP Status Codes), and RFC7538 (Permanent Redirect) are supported.
Completely library agnostic. No dependencies.
Installation
npm install http-status-codes --save
Usage (express 4.x)
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)
});
Codes
Constant | Code | Status Text |
---|
ACCEPTED | 202 | Accepted |
BAD_GATEWAY | 502 | Bad Gateway |
BAD_REQUEST | 400 | Bad Request |
CONFLICT | 409 | Conflict |
CONTINUE | 100 | Continue |
CREATED | 201 | Created |
EXPECTATION_FAILED | 417 | Expectation Failed |
FAILED_DEPENDENCY | 424 | Failed Dependency |
FORBIDDEN | 403 | Forbidden |
GATEWAY_TIMEOUT | 504 | Gateway Timeout |
GONE | 410 | Gone |
HTTP_VERSION_NOT_SUPPORTED | 505 | HTTP Version Not Supported |
IM_A_TEAPOT | 418 | I'm a teapot |
INSUFFICIENT_SPACE_ON_RESOURCE | 419 | Insufficient Space on Resource |
INSUFFICIENT_STORAGE | 507 | Insufficient Storage |
INTERNAL_SERVER_ERROR | 500 | Server Error |
LENGTH_REQUIRED | 411 | Length Required |
LOCKED | 423 | Locked |
METHOD_FAILURE | 420 | Method Failure |
METHOD_NOT_ALLOWED | 405 | Method Not Allowed |
MOVED_PERMANENTLY | 301 | Moved Permanently |
MOVED_TEMPORARILY | 302 | Moved Temporarily |
MULTI_STATUS | 207 | Multi-Status |
MULTIPLE_CHOICES | 300 | Multiple Choices |
NETWORK_AUTHENTICATION_REQUIRED | 511 | Network Authentication Required |
NO_CONTENT | 204 | No Content |
NON_AUTHORITATIVE_INFORMATION | 203 | Non Authoritative Information |
NOT_ACCEPTABLE | 406 | Not Acceptable |
NOT_FOUND | 404 | Not Found |
NOT_IMPLEMENTED | 501 | Not Implemented |
NOT_MODIFIED | 304 | Not Modified |
OK | 200 | OK |
PARTIAL_CONTENT | 206 | Partial Content |
PAYMENT_REQUIRED | 402 | Payment Required |
PERMANENT_REDIRECT | 308 | Permanent Redirect |
PRECONDITION_FAILED | 412 | Precondition Failed |
PRECONDITION_REQUIRED | 428 | Precondition Required |
PROCESSING | 102 | Processing |
PROXY_AUTHENTICATION_REQUIRED | 407 | Proxy Authentication Required |
REQUEST_HEADER_FIELDS_TOO_LARGE | 431 | Request Header Fields Too Large |
REQUEST_TIMEOUT | 408 | Request Timeout |
REQUEST_TOO_LONG | 413 | Request Entity Too Large |
REQUEST_URI_TOO_LONG | 414 | Request-URI Too Long |
REQUESTED_RANGE_NOT_SATISFIABLE | 416 | Requested Range Not Satisfiable |
RESET_CONTENT | 205 | Reset Content |
SEE_OTHER | 303 | See Other |
SERVICE_UNAVAILABLE | 503 | Service Unavailable |
SWITCHING_PROTOCOLS | 101 | Switching Protocols |
TEMPORARY_REDIRECT | 307 | Temporary Redirect |
TOO_MANY_REQUESTS | 429 | Too Many Requests |
UNAUTHORIZED | 401 | Unauthorized |
UNPROCESSABLE_ENTITY | 422 | Unprocessable Entity |
UNSUPPORTED_MEDIA_TYPE | 415 | Unsupported Media Type |
USE_PROXY | 305 | Use Proxy |
TypeScript
There is an included definition file that adds rules for use, comments, and links to official documentation.
Usage
Option 1: Full import of package
import * as HttpStatus from 'http-status-codes'
response
.status(HttpStatus.OK)
.send('ok')
response
.status(HttpStatus.INTERNAL_SERVER_ERROR)
.send({
error: HttpStatus.getStatusText(HttpStatus.INTERNAL_SERVER_ERROR)
})
Option 2: Selective import
import { OK, getStatusText } from 'http-status-codes'
response
.status(OK)
.send(getStatusText(OK))