本文のないレスポンスに本文が定義されている(OpenAPI 3.0)

HEAD、204、304の本文定義がHTTPの規則と矛盾している状態

説明

HTTPの規則では、HEAD リクエストへのレスポンスと、204 または 304 のレスポンスに本文はありません。本文スキーマを定義すると、実際のレスポンス契約と矛盾します。

想定される影響

クライアントや生成されたSDKが存在しない本文を解析しようとしたり、テストが誤った結果を期待したりする可能性があります。

対処方法

これらのレスポンスから本文の定義を削除してください。OpenAPI 3.0では content、2.0ではレスポンスの schema が該当します。説明と必要なヘッダー情報は残してください。

例

次のOpenAPI 3.0の抜粋では、204 レスポンスから content を削除しています。参照先の ApiVersion の定義は省略しています。

変更前

json
{
  "openapi": "3.0.0",
  "paths": {
    "/": {
      "delete": {
        "responses": {
          "204": {
            "description": "has content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiVersion"
                }
              }
            }
          }
        }
      }
    }
  }
}

変更後

json
{
  "openapi": "3.0.0",
  "paths": {
    "/": {
      "delete": {
        "responses": {
          "204": {
            "description": "no content"
          }
        }
      }
    }
  }
}

参考資料