2016-07-15 133 views
2

我正在嘗試訪問類似於http://example.com/service1?q1=a&q2=b的網址。然而q1有時沒有任何與其相關的值,但是需要訪問該服務(http://example.com/service1?q1=&q2=b)。我如何通過swagger ui JSON實現這一目標。我試過使用allowEmptyValue選項,但它似乎並沒有工作。如何將空值傳遞給在swagger中查詢參數?

請找到樣本JSON我使用allowEmptyValue選項下面試過,

{ 
    "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" 
     } 
} 

當空值傳遞給Q1,招搖幀URL作爲http://example.com/service1?q2=b。是否有包含q1的空值將被包含在URL中(http://example.com/service1?q1=&q2=b)?

任何幫助將不勝感激。

+0

@SupunWijerathne我們治療是一種特殊情況,其中第一季度爲空值做了具體的操作 – 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-實現的觀點,這應該在有你的WS,除非你有其他服務時,「Q1」不添加到被觸發。 (在大多數情況下,這可能不是一個好設計)您可以將其作爲永久解決方案,而不是臨時解決方案。

選項2:使用枚舉(不是一致的解決方案)

this解釋的那樣。你可以爲你的swagger定義指定你的查詢參數'q1'。

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

(1) 「必需的」 必須爲假。

(2)「allowEmptyValue」必須爲真。

(3)「枚舉」必須只有一個非空值。

(4)「type」必須是「boolean」。 (或「串」用一種特殊的枚舉,說「包含」)

+0

我不可能使用您的選項1,因爲我必須更改數百個Web服務,並且您的選項2會阻止用戶輸入他的輸入,因爲q1只能取值爲enum中提及的一組值。 – Anand

+0

@Anand如果option1可用(如果不影響您的端點規範),那麼這是最好的方法,不僅要解決您的招搖問題,還要解決總體實施目標。儘管您必須更改數百個,但如果您高效地使用IDE,它只需要幾次點擊。 –

+0

不..但我們決定去解決方法:) – Anand