2016-07-15 6 views
2

http://example.com/service1?q1=a&q2=bのようなURLにアクセスしようとしています。ただし、q1には時にはそれに関連する値はありませんが、サービスにアクセスするために必要です(http://example.com/service1?q1=&q2=b)。どうやってこれを実現するのですか?私はallowEmptyValueオプションを使用してみましたが、動作していないようです。swaggerでクエリのパラメータに空の値を渡すにはどうすればいいですか?

空の値がQ1に渡され
{ 
    "path": "/service1.do", 
    "operations": [{ 
     "method": "GET", 
     "type": "void", 
     "parameters": [{ 
       "name": "q1", 
       "in" : "query", 
       "required": false, 
       "type": "string", 
       "paramType": "query", 
       "allowEmptyValue": true 
      },{ 
       "name": "q2", 
       "in" : "query", 
       "required": true, 
       "type": "string", 
       "paramType": "query", 
      } 


     ], 
     "responseMessages": [{ 
      "code": 200, 
      "responseModel": "/successResponseModel" 
     } 
} 

は、闊歩はhttp://example.com/service1?q2=bとしてURLをフレーム、私はallowEmptyValueオプションを使用してみましたサンプルJSONの下に見つけてください。とにかく空の値を持つq1をURLに含めるには(http://example.com/service1?q1=&q2=b)?

ご協力いただければ幸いです。

+0

@SupunWijerathneはQ1のために空の値が特定の操作 – Anand

+0

をしており、特殊なケースですのでhttp://example.com/service1 ?q1 =&q2 = bはswagger-uiの権利なしでダイレクトコールで動作しますか? –

+0

@SupunWijerathne yep .. – Anand

答えて

1

あなたの問題はまだ解決されていないswagger-uiの既知の問題だと思われます。 see

回避策として、次のいずれかを実行してください。

オプション1:デフォルト値を指定します。

このオプションはswagger-uiとは関係ありません。 ws実装では、 'q1'が追加されていないときに使用するデフォルト値(ケース "")を追加する必要があります。どのRESTフレームワークにもこのオプションがあります。 WS-実装の視点として

あなたが「Q1」が追加されていないときにトリガされる別のサービスを持っていない限り、このあなたのWS、であるはずです。 (ほとんどの場合、良いデザインではないかもしれません)そして、これは一時的なものではなく永遠の解決策として使うことができます。

オプション2:thisで説明したように列挙型(非一貫性溶液)

を使用。スガッガ定義のために、クエリパラメータ 'q1'を次のように指定できます。

{ 
       "in": "query", 
       "name": "q1", 
       "type": "boolean", 
       "required": false, 
       "enum" : [true], 
       "allowEmptyValue" : true 
} 

(1) "必要" 偽でなければなりません。

(2) "allowEmptyValue"がtrueである必要があります。

(3) "enum"には、空でない値が1つだけ必要です。

(4) "type"は "boolean"でなければなりません。 (特別な列挙型を持つか、「文字列」、「INCLUDE」と言う)私たちが扱う

+0

何百ものWebサービスを変更しなければならないのでオプション1を使用することはできません。また、オプション2は、q1がenumに記載されている値のセットのみを取ることができるため、 – Anand

+0

@Anandオプション1が利用可能な場合(エンドポイントの仕様に影響を与えない場合)、これは厄介な問題を解決するだけでなく、全体的な実装の目標を達成する最善の方法です。何百ものものを変更する必要がありますが、効率的にIDEを使用すると、クリック数はわずかです。 –

+0

いいえ。私たちは回避策に行くことに決めました:) – Anand

関連する問題