swn-http-status
Version:
HTTPステータスコードをマジックナンバー化せずに扱えるシンプルなクラス。
133 lines (109 loc) • 15.5 kB
Markdown
# HTTP Status パッケージ
このパッケージは、さまざまな HTTP ステータスコードを表す静的プロパティを持つシンプルな JavaScript/TypeScript クラス `HTTPStatus` を提供します。
## インストール
npm でパッケージをインストールできます。
```
npm install swn-http-status
```
> [!TIP]
> TypeScript プロジェクトでは型定義ファイル(`.d.ts`)も自動的に利用されます。
## 使い方
### TypeScript の場合
```typescript
import HTTPStatus from "swn-http-status";
console.log(HTTPStatus.OK); // 200
console.log(HTTPStatus.NotFound); // 404
```
### JavaScript (ESModules) の場合
```javascript
// ES Modules
import HTTPStatus from "swn-http-status";
console.log(HTTPStatus.OK); // 200
console.log(HTTPStatus.NotFound); // 404
```
### JavaScript の場合 (CommonJS)
```javascript
// CommonJS
const HTTPStatus = require("swn-http-status");
console.log(HTTPStatus.OK); // 200
console.log(HTTPStatus.NotFound); // 404
```
> [!NOTE]
> CommonJS で利用する場合も `require("swn-http-status")` で直接 `HTTPStatus.OK` のようにアクセスできます。
## HTTP ステータスコード一覧
`HTTPStatus` クラスには、以下のステータスコードが含まれています。
| コード | 名前 | 説明 |
| -----: | :---------------------------- | :---------------------------------------------------------------------------------------------------------------- |
| 100 | Continue | サーバーはリクエストヘッダーを受信し、クライアントはリクエストを続行できます。 |
| 101 | SwitchingProtocols | サーバーがプロトコルの切り替えを承認したことを示します。 |
| 102 | Processing | WebDAV 拡張。リクエストの処理が継続中であることを示します。 |
| 103 | EarlyHints | レスポンスヘッダーの早期通知に使用されます。 |
| 200 | OK | リクエストが正常に成功しました。 |
| 201 | Created | 新しいリソースが作成されました。 |
| 202 | Accepted | リクエストは受理されましたが、まだ処理されていません。 |
| 203 | NonAuthoritativeInformation | オリジンサーバー以外からの情報を返します。 |
| 204 | NoContent | レスポンスボディがありません。 |
| 205 | ResetContent | クライアントはフォームなどをリセットする必要があります。 |
| 206 | PartialContent | 部分的なレスポンスを返します(範囲リクエスト)。 |
| 207 | MultiStatus | WebDAV 拡張。複数のステータスを返します。 |
| 208 | AlreadyReported | WebDAV 拡張。すでに報告済みのリソースです。 |
| 226 | IMUsed | インスタントメッセージングで使用される拡張コードです。 |
| 300 | MultipleChoices | 複数の選択肢が存在します。 |
| 301 | MovedPermanently | リソースが恒久的に移動しました。 |
| 302 | Found | リソースが一時的に移動しました。 |
| 303 | SeeOther | 他の URI を参照してください。 |
| 304 | NotModified | リソースは変更されていません。 |
| 305 | UseProxy | プロキシを使用する必要があります。 |
| 307 | TemporaryRedirect | 一時的にリダイレクトされます。 |
| 308 | PermanentRedirect | 恒久的にリダイレクトされます。 |
| 400 | BadRequest | サーバーがリクエストを理解できません。不正な構文やパラメータの場合に返されます。 |
| 401 | Unauthorized | 認証が必要ですが、認証情報が提供されていないか無効です。 |
| 402 | PaymentRequired | 支払いが必要な場合に使用されます(現在は予約されています)。 |
| 403 | Forbidden | サーバーがリクエストを理解したが、権限がないため拒否されました。 |
| 404 | NotFound | サーバーは要求されたリソースを見つけることができません。ブラウザでは、これは URL が認識されないことを意味します。 |
| 405 | MethodNotAllowed | リクエストメソッドがサポートされていません。 |
| 406 | NotAcceptable | リクエストしたリソースが Accept ヘッダーで許可されていません。 |
| 407 | ProxyAuthenticationRequired | プロキシ認証が必要です。 |
| 408 | RequestTimeout | サーバーがクライアントからのリクエストをタイムアウトしました。 |
| 409 | Conflict | リクエストが現在のリソースの状態と競合しています。 |
| 410 | Gone | リクエストされたリソースは恒久的に削除されました。 |
| 411 | LengthRequired | Content-Length ヘッダーが必要です。 |
| 412 | PreconditionFailed | 前提条件が失敗しました。 |
| 413 | PayloadTooLarge | リクエストペイロードが大きすぎます。 |
| 414 | URITooLong | リクエスト URI が長すぎます。 |
| 415 | UnsupportedMediaType | サポートされていないメディアタイプです。 |
| 416 | RangeNotSatisfiable | リクエストした範囲が満たせません。 |
| 417 | ExpectationFailed | Expect ヘッダーで指定された期待値にサーバーが応えられません。 |
| 418 | ImATeapot | エイプリルフールのジョークコードです。ティーポットはコーヒーを淹れられません。 |
| 421 | MisdirectedRequest | リクエストが誤ったサーバーに送信されました。 |
| 422 | UnprocessableEntity | リクエストは理解できたが処理できません(バリデーションエラー等)。 |
| 423 | Locked | リソースがロックされています。 |
| 424 | FailedDependency | 依存関係の失敗によりリクエストが失敗しました。 |
| 425 | TooEarly | リクエストが早すぎます。 |
| 426 | UpgradeRequired | プロトコルのアップグレードが必要です。 |
| 428 | PreconditionRequired | 前提条件が必要です。 |
| 429 | TooManyRequests | リクエストが多すぎます(レートリミット)。 |
| 431 | RequestHeaderFieldsTooLarge | リクエストヘッダーが大きすぎます。 |
| 451 | UnavailableForLegalReasons | 法的理由により利用できません。 |
| 500 | InternalServerError | サーバー内部で予期しないエラーが発生しました。 |
| 501 | NotImplemented | サーバーがリクエストされた機能を実装していません。 |
| 502 | BadGateway | サーバーが不正なレスポンスを受け取りました。 |
| 503 | ServiceUnavailable | サービスが一時的に利用できません。 |
| 504 | GatewayTimeout | ゲートウェイまたはプロキシがタイムアウトしました。 |
| 505 | HTTPVersionNotSupported | サーバーがリクエストされた HTTP バージョンをサポートしていません。 |
| 506 | VariantAlsoNegotiates | ネゴシエーションエラーが発生しました。 |
| 507 | InsufficientStorage | サーバーのストレージ容量が不足しています。 |
| 508 | LoopDetected | サーバーが無限ループを検出しました。 |
| 510 | NotExtended | 拡張が必要です。 |
| 511 | NetworkAuthenticationRequired | ネットワーク認証が必要です。 |
## 更新履歴
| バージョン | 日付 | 主な変更点 |
| :--------: | :--------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 1.0.5 | 2025-06-10 | <ul><li>HTTP ステータスコードから名前を取得できる <code>HTTPStatus.Name(statusCode: number): string \| undefined</code> 静的メソッドを追加</li><li>全コード・全名称の相互変換テストを追加</li> |
| 1.0.4 | 2025-05-23 | <ul><li>CommonJS での利用方法を <code>HTTPStatus.default.OK</code> から <code>HTTPStatus.OK</code> へ変更</li></ul> |
| 1.0.3 | 2025-05-23 | <ul><li>ESModule 対応関連の修正を行いました</li></ul> |
| 1.0.2 | 2025-05-23 | <ul><li>ビルド成果物の配置と npm scripts を整理し、ESModule と CommonJS 両対応をより明確に</li><li><code>dist/src/</code> 配下に ESM・CJS 両方のエントリポイントを配置</li><li><code>package.json</code> の <code>exports</code> 設定を修正</li></ul> |
| 1.0.1 | 2025-05-22 | <ul><li>README の「使い方」で、ESModules と CommonJS の場合を分けて記載</li></ul> |
| 1.0.0 | 2025-05-21 | <ul><li>初回リリース</li></ul> |
## ライセンス
このプロジェクトは MIT ライセンスの下で公開されています。詳細は LICENSE ファイルをご覧ください。