オブジェクトのリストを含む OpenAPI クエリ文字列パラメータ 質問する

オブジェクトのリストを含む OpenAPI クエリ文字列パラメータ 質問する

私は文書化しようとしているオープンAPIクエリ文字列は次のようになります

filtered[0][id]=code&filtered[0][value]=12345

idおよびプロパティを持つオブジェクトのリストが含まれますvalue

私のyamlドキュメントは次のようになります

parameters:
    - name: filtered
      in: query
      description: filters to be applied
      explode: true
      style: deepObject
      schema:
        type: array
        items:
          properties:
            id:
              description: name of the field to be filtered
              type: string
            value:
              description: value of the filter
          type: object

問題は次の通りです。このstyle: deepObjectオプションは1つのレベルでしか機能せず、オブジェクトが実際に存在する2番目のレベルでは機能しないようです。つまり、次のようなクエリ文字列が期待されます。

?sorted[0]=%7B%0A%20%20%22id%22%3A%20%22string%22%2C%0A%20%20%22value%22%3A%20true%0A%7D

オブジェクトは、idおよびvalueキーを持つ配列としてシリアル化されません。

これを解決する方法はありますか?

ベストアンサー1

OpenAPI 3.1ではこれは不可能です

OpenAPI 3.0/3.1仕様では現在、deepObject動作が定義されています単純なオブジェクトのみ(プリミティブプロパティを持つ)

{
  "id": 5,
  "name": "Bob"
}

しかし配列には使用不可そしてネストされたオブジェクトには適用されません

filtered[0][id]配列とネストされたオブジェクトの動作は定義されていないため、クエリ文字列を記述する方法は実際にはありません。技術的には、 、 などを個別のクエリ パラメータとして定義するしかありませんfiltered[0][value]


既存の API を記述するのではなく、新しい API を設計する場合は、代わりにリクエスト本文でオブジェクトの配列を渡すことを検討してください。

おすすめ記事