GETの成功レスポンスが未定義(OpenAPI 3.0)

取得に成功したときのステータスコードが文書にない状態

説明

GET の成功ステータスコードと結果が明記されていないと、呼び出し側は正常な取得結果を推測する必要があります。default はエラーだけでなく、個別の定義がないほかのレスポンスも対象にするため、成功時の契約が不明確になることがあります。

想定される影響

クライアントとテストで、正常なレスポンスのステータスコードやデータ形式の想定が食い違う可能性があります。

対処方法

通常の取得結果を示す 200 など、実際に返す成功コードを定義してください。部分的なコンテンツを示す 206 など、ほかの成功コードを使う場合も、その意味とレスポンス形式を文書化してください。

例

次のOpenAPI 2.0の抜粋では、取得成功を示す 200 を追加しています。レスポンス本文のスキーマは、この例では省略しています。

変更前

json
{
  "swagger": "2.0",
  "paths": {
    "/item": {
      "get": {
        "operationId": "getItem",
        "summary": "Get item",
        "responses": {
          "default": {
            "description": "Error"
          }
        }
      }
    }
  }
}

変更後

json
{
  "swagger": "2.0",
  "paths": {
    "/item": {
      "get": {
        "operationId": "getItem",
        "summary": "Get item",
        "responses": {
          "200": {
            "description": "Success"
          },
          "default": {
            "description": "Error"
          }
        }
      }
    }
  }
}

参考資料