2016-07-04 8 views
4

URLにオブジェクトパラメータをクエリ文字列としてエンコードするGETルートがあります。スワッガードキュメントでオブジェクトタイプのクエリパラメータを使用する

私は基本的に私を許可しないエラーがquery typeパラメータでschema/objectタイプを使用して取得闊歩ドキュメント執筆:

paths: 
    /mypath/: 
    get: 
     parameters 
     - in: path 
      name: someParam 
      description: some param that works 
      required: true 
      type: string 
      format: timeuuid #good param, works well 
     - $ref: "#/parameters/mySortingParam" #this yields an error 

parameters: 
    mySortingParam 
    name: paging 
    in: query 
    description: Holds various paging attributes 
    required: false 
    schema: 
     type: object 
     properties: 
     pageSize: 
      type: number 
     cursor: 
      type: object 
      properties: 
      after: 
       type: string 
       format: string 

オブジェクト値を持つリクエストクエリのparamは、実際の要求でエンコードされるだろうし。

スワッガーは画面上部にエラーを表示しますが、オブジェクトはスワッガーUIエディターで正しく表示されますが、そのエラーはドキュメントの上に浮かびます。私はあなたがクエリパラメータとして闊歩仕様でクエリパラメータとして「オブジェクト」を使用することができるとは思わない

答えて

6
+0

はい、そのように思われます。 – Vee6

+1

swagger.ioのドキュメントには、そうでない場合は、https://swagger.io/docs/specification/describing-parameters/という意味で、むしろ残念です。スキーマとコンテンツの下のセクションを参照してください。上記のリンクでは、オブジェクトをJSONなどのコンテンツタイプに変換する方法について説明していますが、OPのクエリに直接関係する例を挙げるのには不十分です。 –

+0

@DanielMaclean:あなたが投稿したリンクはOpenAPI 3.0に関するものですが、答えはOpenAPI/Swagger 2.0(3.0は2016年には存在しませんでした)に関するものです。そのリンクの2.0バージョンは、https://swagger.io/docs/specification/2-0/describing-parameters/です。 – Helen

0

これは、だけではない闊歩すなわちOpenAPIのv2では、可能ですがサポートされています。 OpenAPIのv3は、これはここに可能である方法を説明します。あなたのようにクエリパラメータを設定し、その後、単なる古い文字列型としてクエリパラメータを持っているし、手動でシリアライズを行うことができ、その間に

https://swagger.io/docs/specification/describing-parameters/

parameters: 
- in: query 
name: filter 
# Wrap 'schema' into 'content.<media-type>' 
content: 
    application/json: # <---- media type indicates how to serialize/deserialize the parameter content 
    schema: 
     type: object 
     properties: 
     type: 
      type: string 
     color: 
      type: string 

必須。これは、SwaggerUIがOpenAPI v3を完全にサポートするまで私がやっていることです。

関連する問題