OpenAPI にない HTTP ステータスの抽出
ログで見かけた HTTP ステータスが、OpenAPI に定義されているかを突き合わせる。
OpenAPI 文書(JSON)と、実際に観測した「メソッド パス コード」の一覧を貼り付けると、各コードが明示・範囲(4XX など)・default のどれで定義されているか、未定義かを判定します。データは端末の外へ送信しません。
観測したコードが OpenAPI に定義されているか調べる
入力した内容は送信されません。貼り付けた文字や選んだファイルは、お使いのブラウザの中だけで処理します。本サイトのサーバーや第三者へ送信・保存しません(通信を禁止する設定でページを配信しています)。
結果
エラー 0 件・警告 1 件・情報 1 件
指摘(エラー・警告・情報)
- 情報 3 行目 GET /pets のコード 500 は個別に宣言されておらず、default の定義で受けています。個別に宣言するかは仕様の書き方の判断です。
- 警告 5 行目 POST /pets にコード 500 の定義がありません(500・5XX・default のいずれもない)。応答の定義を追加するか、観測が想定外でないか確認してください。
| 観測した応答 | 7 件 |
|---|---|
| 定義あり | 5 件 |
| default で受けるもの | 1 件 |
| 未定義 | 1 件 |
判定の一覧
| 行 | 操作 | コード | 判定 |
|---|---|---|---|
| 1 | GET /pets | 200 | 定義あり(明示のコード) |
| 2 | GET /pets | 404 | 定義あり(範囲 4XX) |
| 3 | GET /pets | 500 | 個別の定義なし(default で受ける) |
| 4 | POST /pets | 201 | 定義あり(明示のコード) |
| 5 | POST /pets | 500 | 未定義 |
| 6 | GET /pets/{id} | 404 | 定義あり(明示のコード) |
| 7 | GET /pets/{id} | 503 | 定義あり(範囲 5XX) |
初期表示は入力例「明示・範囲・default・未定義が混ざる」の結果です。入力を変えるとその場で処理し直します。判定の根拠は仕様と根拠にまとめています。
ご利用にあたって
- 運用で観測した応答が仕様にないとき、仕様が古いのか実装が想定外なのかは、このツールでは判断できません。開発の担当者と確認してください。
使い方
- OpenAPI 文書を JSON 形式で「OpenAPI 文書」に貼り付けます。
- ログなどから観測したメソッド、パス、ステータスコードを、1 行に 1 つ「GET /pets/7 404」の形で入力します。
- 表の「判定」で、明示のコード・範囲・default・未定義のどれかが分かります。
- 「未定義」は警告です。仕様に応答を追加するか、想定外の応答が出ていないかを確認してください。
入力例と結果
代表的な入力・境界の入力・壊れた入力の例です。例ごとに入力・出力・指摘と、その結果になる理由(検算)を載せています。
| 入力例 | 結果 |
|---|---|
| 明示・範囲・default・未定義が混ざる | エラー 0 件・警告 1 件・情報 1 件 |
| 明示のコードと範囲が両方ある | エラー 0 件・警告 0 件・情報 0 件 |
| 範囲を小文字の 4xx で書いてしまった | エラー 0 件・警告 2 件・情報 0 件 |
| YAML のまま貼り付けた | エラー 1 件・警告 0 件・情報 0 件 |
このツールでできないこと(制約)
- JSON 形式の文書だけを読みます。YAML は未対応で、先に JSON に変換してください。
- $ref で別の場所を参照する応答の中身は見ません。コードのキーが定義されているかだけを判定します。
- 応答の本文やヘッダーが仕様に合っているかは検査しません。ステータスコードの有無だけです。
- paths の外(webhooks など)や、パスのテンプレートが複数の区間にまたがる指定には対応していません。
よくある質問
default があれば未定義にはなりませんか?
はい。default は個別に宣言されていない応答用なので、default のある操作では、個別のコードがなくても未定義にはしません。ただし default で受けているコードは、仕様に個別に書くかを見直す材料として情報で知らせます。
4XX と 404 の両方があるとどちらが使われますか?
OpenAPI 3.1.0 では、明示のコード定義が範囲の定義より優先されます。404 が明示されていれば 404 の定義が使われ、404 がなければ 4XX の定義が使われます。
貼り付けた文書は送信されますか?
突き合わせはお使いのブラウザの中だけで行い、文書や観測した応答をサーバーや第三者へ送信・保存しません。ページは通信を禁止する設定で配信しています。社内の API 仕様も安心して貼り付けられます。