Http constants
npm install @budarin/http-constantshttp-status-codes) и MIME типов (mime-types), но нет единого модуля, объединяющего все необходимые HTTP константы в одном месте.
bash
npm install @budarin/http-constants
или
pnpm add @budarin/http-constants
`
Использование
> ⚡ Оптимизация бандла: Библиотека использует subpath exports - каждый модуль импортируется отдельно, что обеспечивает идеальный tree-shaking и отсутствие лишних chunks в бандле!
Доступные константы
$3
- HTTP_METHOD_GET, HTTP_METHOD_POST, HTTP_METHOD_PUT, HTTP_METHOD_DELETE, HTTP_METHOD_PATCH, HTTP_METHOD_OPTIONS, HTTP_METHOD_HEAD
$3
- 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
$3
- OK: 'OK'
$3
- 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
$3
- 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: MIME_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
$3
Для обратной совместимости доступны константы с префиксом CONTENT_TYPE_:
- Application: CONTENT_TYPE_APPLICATION_JSON, CONTENT_TYPE_APPLICATION_XML, и др.
- Text: CONTENT_TYPE_TEXT_PLAIN, CONTENT_TYPE_TEXT_HTML, и др.
- Image: CONTENT_TYPE_IMAGE_JPEG, CONTENT_TYPE_IMAGE_PNG, и др.
- И все остальные с аналогичным префиксом
$3
- События: 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
Пример
`typescript
import {
HTTP_METHOD_GET,
HTTP_METHOD_POST,
} from '@budarin/http-constants/methods';
import { HTTP_STATUS_OK } from '@budarin/http-constants/statuses';
import { MIME_APPLICATION_JSON } from '@budarin/http-constants/mime-types';
import {
HEADER_CONTENT_TYPE,
HEADER_CONTENT_SECURITY_POLICY,
HEADER_X_FRAME_OPTIONS,
} 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');
``