@budarin/http-constants
v1.0.16
Published
Http constants
Readme
@budarin/http-constants
TypeScript библиотека с константами для HTTP протокола.
В Node.js экосистеме есть отдельные пакеты для HTTP статусов (http-status-codes) и MIME типов (mime-types), но нет единого модуля, объединяющего все необходимые HTTP константы в одном месте.
Установка
npm install @budarin/http-constants
# или
pnpm add @budarin/http-constantsИспользование
Импорт всех констант
import httpConsts from '@budarin/http-constants';
...
status = httpConsts.HTTP_STATUS_OK;
// или
import { HTTP_STATUS_OK, ... } from '@budarin/http-constants';Импорт отдельных модулей
// HTTP методы
import {
HTTP_METHOD_GET,
HTTP_METHOD_POST,
HTTP_METHOD_PUT,
HTTP_METHOD_DELETE,
} from '@budarin/http-constants/methods';
// HTTP статус коды
import {
HTTP_STATUS_OK,
HTTP_STATUS_NOT_FOUND,
HTTP_STATUS_INTERNAL_SERVER_ERROR,
} from '@budarin/http-constants/statuses';
// HTTP заголовки
import {
HEADER_CONTENT_TYPE,
HEADER_AUTHORIZATION,
} from '@budarin/http-constants/headers';
// MIME Types
import {
MIME_APPLICATION_JSON,
MIME_TEXT_HTML,
} from '@budarin/http-constants/mime-types';
// Service Worker константы
import {
SW_EVENT_INSTALL,
SW_STATE_ACTIVATED,
} from '@budarin/http-constants/service-worker';Доступные константы
HTTP методы (methods)
HTTP_METHOD_GET,HTTP_METHOD_POST,HTTP_METHOD_PUT,HTTP_METHOD_DELETE,HTTP_METHOD_PATCH,HTTP_METHOD_OPTIONS,HTTP_METHOD_HEAD
HTTP статус коды (statuses) - 47 статусов
- 1xx Информационные:
HTTP_STATUS_CONTINUE,HTTP_STATUS_SWITCHING_PROTOCOLS,HTTP_STATUS_PROCESSING,HTTP_STATUS_EARLY_HINTS - 2xx Успешные:
HTTP_STATUS_OK,HTTP_STATUS_CREATED,HTTP_STATUS_ACCEPTED,HTTP_STATUS_NON_AUTHORITATIVE_INFORMATION,HTTP_STATUS_NO_CONTENT,HTTP_STATUS_RESET_CONTENT,HTTP_STATUS_PARTIAL_CONTENT,HTTP_STATUS_MULTI_STATUS,HTTP_STATUS_ALREADY_REPORTED,HTTP_STATUS_IM_USED - 3xx Перенаправления:
HTTP_STATUS_MULTIPLE_CHOICES,HTTP_STATUS_MOVED_PERMANENTLY,HTTP_STATUS_FOUND,HTTP_STATUS_SEE_OTHER,HTTP_STATUS_NOT_MODIFIED,HTTP_STATUS_USE_PROXY,HTTP_STATUS_TEMPORARY_REDIRECT,HTTP_STATUS_PERMANENT_REDIRECT - 4xx Ошибки клиента:
HTTP_STATUS_BAD_REQUEST,HTTP_STATUS_UNAUTHORIZED,HTTP_STATUS_PAYMENT_REQUIRED,HTTP_STATUS_FORBIDDEN,HTTP_STATUS_NOT_FOUND,HTTP_STATUS_METHOD_NOT_ALLOWED,HTTP_STATUS_NOT_ACCEPTABLE,HTTP_STATUS_PROXY_AUTHENTICATION_REQUIRED,HTTP_STATUS_REQUEST_TIMEOUT,HTTP_STATUS_CONFLICT,HTTP_STATUS_GONE,HTTP_STATUS_LENGTH_REQUIRED,HTTP_STATUS_PRECONDITION_FAILED,HTTP_STATUS_PAYLOAD_TOO_LARGE,HTTP_STATUS_URI_TOO_LONG,HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE,HTTP_STATUS_RANGE_NOT_SATISFIABLE,HTTP_STATUS_EXPECTATION_FAILED,HTTP_STATUS_IM_A_TEAPOT,HTTP_STATUS_MISDIRECTED_REQUEST,HTTP_STATUS_UNPROCESSABLE_ENTITY,HTTP_STATUS_LOCKED,HTTP_STATUS_FAILED_DEPENDENCY,HTTP_STATUS_TOO_EARLY,HTTP_STATUS_UPGRADE_REQUIRED,HTTP_STATUS_PRECONDITION_REQUIRED,HTTP_STATUS_TOO_MANY_REQUESTS,HTTP_STATUS_REQUEST_HEADER_FIELDS_TOO_LARGE,HTTP_STATUS_UNAVAILABLE_FOR_LEGAL_REASONS - 5xx Ошибки сервера:
HTTP_STATUS_INTERNAL_SERVER_ERROR,HTTP_STATUS_NOT_IMPLEMENTED,HTTP_STATUS_BAD_GATEWAY,HTTP_STATUS_SERVICE_UNAVAILABLE,HTTP_STATUS_GATEWAY_TIMEOUT,HTTP_STATUS_HTTP_STATUS_VERSION_NOT_SUPPORTED,HTTP_STATUS_VARIANT_ALSO_NEGOTIATES,HTTP_STATUS_INSUFFICIENT_STORAGE,HTTP_STATUS_LOOP_DETECTED,HTTP_STATUS_NOT_EXTENDED,HTTP_STATUS_NETWORK_AUTHENTICATION_REQUIRED
HTTP ответ
- OK: 'OK'
HTTP заголовки (headers) - 80+ заголовков
- General:
HEADER_CACHE_CONTROL,HEADER_CONNECTION,HEADER_DATE,HEADER_PRAGMA,HEADER_TRAILER,HEADER_TRANSFER_ENCODING,HEADER_UPGRADE,HEADER_VIA,HEADER_WARNING - Request:
HEADER_ACCEPT,HEADER_ACCEPT_CHARSET,HEADER_ACCEPT_ENCODING,HEADER_ACCEPT_LANGUAGE,HEADER_AUTHORIZATION,HEADER_EXPECT,HEADER_FROM,HEADER_HOST,HEADER_IF_MATCH,HEADER_IF_MODIFIED_SINCE,HEADER_IF_NONE_MATCH,HEADER_IF_RANGE,HEADER_IF_UNMODIFIED_SINCE,HEADER_MAX_FORWARDS,HEADER_PROXY_AUTHORIZATION,HEADER_RANGE,HEADER_REFERER,HEADER_TE,HEADER_USER_AGENT - Response:
HEADER_ACCEPT_RANGES,HEADER_AGE,HEADER_ETAG,HEADER_LOCATION,HEADER_PROXY_AUTHENTICATE,HEADER_RETRY_AFTER,HEADER_SERVER,HEADER_VARY,HEADER_WWW_AUTHENTICATE - Entity:
HEADER_ALLOW,HEADER_CONTENT_ENCODING,HEADER_CONTENT_LANGUAGE,HEADER_CONTENT_LENGTH,HEADER_CONTENT_LOCATION,HEADER_CONTENT_MD5,HEADER_CONTENT_RANGE,HEADER_CONTENT_TYPE,HEADER_EXPIRES,HEADER_LAST_MODIFIED - Security:
HEADER_CONTENT_SECURITY_POLICY,HEADER_STRICT_TRANSPORT_SECURITY,HEADER_X_CONTENT_TYPE_OPTIONS,HEADER_X_FRAME_OPTIONS,HEADER_X_XSS_PROTECTION,HEADER_REFERRER_POLICY,HEADER_PERMISSIONS_POLICY - CORS:
HEADER_ACCESS_CONTROL_ALLOW_ORIGIN,HEADER_ACCESS_CONTROL_ALLOW_CREDENTIALS,HEADER_ACCESS_CONTROL_ALLOW_HEADERS,HEADER_ACCESS_CONTROL_ALLOW_METHODS, и др. - Custom:
HEADER_X_FORWARDED_FOR,HEADER_X_FORWARDED_HOST,HEADER_X_FORWARDED_PROTO,HEADER_X_REAL_IP,HEADER_X_REQUESTED_WITH,HEADER_X_CSRF_TOKEN,HEADER_X_API_KEY - Cookie:
HEADER_COOKIE,HEADER_SET_COOKIE - WebSocket:
HEADER_SEC_WEBSOCKET_KEY,HEADER_SEC_WEBSOCKET_ACCEPT,HEADER_SEC_WEBSOCKET_VERSION,HEADER_SEC_WEBSOCKET_PROTOCOL
MIME Types (mime-types) - 68 MIME-типов
- Application:
MIME_APPLICATION_JSON,MIME_APPLICATION_XML,MIME_APPLICATION_X_WWW_FORM_URLENCODED,MIME_APPLICATION_OCTET_STREAM,MIME_APPLICATION_PDF,MIME_APPLICATION_ZIP,MIME_APPLICATION_GZIP,MIME_APPLICATION_JAVASCRIPT,MIME_APPLICATION_ATOM_XML,MIME_APPLICATION_RSS_XML,MIME_APPLICATION_XHTML_XML,MIME_APPLICATION_SOAP_XML,MIME_APPLICATION_JSON_PATCH,MIME_APPLICATION_LD_JSON,MIME_APPLICATION_VND_API_JSON,MIME_APPLICATION_HAL_JSON,MIME_APPLICATION_PROBLEM_JSON, и др. - Text:
MIME_TEXT_PLAIN,MIME_TEXT_HTML,MIME_TEXT_CSS,MIME_TEXT_JAVASCRIPT,MIME_TEXT_XML,MIME_TEXT_CSV,MIME_TEXT_MARKDOWN,MIME_TEXT_CALENDAR,MIME_TEXT_VCARD,MIME_TEXT_RTF - Image:
MIME_IMAGE_JPEG,MIME_IMAGE_PNG,MIME_IMAGE_GIF,MIME_IMAGE_WEBP,MIME_IMAGE_SVG_XML,MIME_IMAGE_BMP,MIME_IMAGE_ICO,MIME_IMAGE_TIFF,MIME_IMAGE_AVIF,MIME_IMAGE_HEIC,MIME_IMAGE_HEIF - Audio:
MIME_AUDIO_MPEG,MIME_AUDIO_WAV,MIME_AUDIO_OGG,MIME_AUDIO_MP4,MIME_AUDIO_AAC,MIME_AUDIO_FLAC,MIME_AUDIO_WEBM,MIME_AUDIO_X_WAV - Video:
MIME_VIDEO_MP4,MIME_VIDEO_WEBM,MIME_VIDEO_OGG,MIME_VIDEO_AVI,MIME_VIDEO_QUICKTIME,MIME_VIDEO_X_FLV,MIME_VIDEO_3GPP,MIME_VIDEO_X_MS_WMV - Multipart:
MIME_MULTIPART_FORM_DATA,MIME_MULTIPART_BYTERANGES,MIME_MULTIPART_ALTERNATIVE,MIME_MULTIPART_MIXED - Font:
FONT_WOFF,MIME_FONT_WOFF2,MIME_FONT_TTF,MIME_FONT_OTF - Message:
MIME_MESSAGE_RFC822,MIME_MESSAGE_PARTIAL,MIME_MESSAGE_EXTERNAL_BODY - Model:
MIME_MODEL_GLTF_JSON,MIME_MODEL_GLTF_BINARY
Service Worker messages(service-worker)
- События:
SW_EVENT_INSTALL, SW_EVENT_ACTIVATE, SW_EVENT_FETCH,, SW_EVENT_MESSAGE, SW_EVENT_SYNC, SW_EVENT_PERIODICSYNC,SW_EVENT_PUSH, SW_EVENT_ERROR, SW_EVENT_MESSAGEERROR, SW_EVENT_UNHANDLEDREJECTION, SW_EVENT_REJECTIONHANDLED, SW_EVENT_STATECHANGE,SW_EVENT_UPDATEFOUND - Состояния:
SW_STATE_ACTIVATED, SW_STATE_ACTIVATING, SW_STATE_INSTALLED, SW_STATE_INSTALLING, SW_STATE_PARSED, SW_STATE_REDUNDANT - Команды:
SW_MSG_INSTALLED, SW_MSG_INSTALLING, SW_MSG_START_INSTALLING, SW_MSG_SKIP_WAITING, SW_MSG_PAGE_RELOAD
Пример
import {
HTTP_METHOD_GET,
HTTP_METHOD_POST,
} from '@budarin/http-constants/methods';
import { OK, HTTP_STATUS_NOT_FOUND } from '@budarin/http-constants/statuses';
import { MIME_APPLICATION_JSON } from '@budarin/http-constants/mime-types';
import { HEADER_CONTENT_TYPE } from '@budarin/http-constants/headers';
// Использование в Express.js
app.get('/api/users', (req, res) => {
if (req.method === HTTP_METHOD_GET) {
res.status(HTTP_STATUS_OK).json({ users: [] });
}
});
// Использование в fetch
fetch('/api/data', {
method: HTTP_METHOD_POST,
headers: {
[HEADER_CONTENT_TYPE]: MIME_APPLICATION_JSON,
},
});
// Использование заголовков безопасности
res.setHeader(HEADER_CONTENT_SECURITY_POLICY, "default-src 'self'");
res.setHeader(HEADER_X_FRAME_OPTIONS, 'DENY');Лицензия
MIT
