2014-11-14 58 views
1

有沒有一種方法來呈現一個複雜對象的請求正文與每個字段都有輸入?Swagger Spring mvc reponsebody

簡而言之,如果我的一個apis期望一個Person(假設它只有一個名字/姓氏)作爲@RequestBody,那麼向這個Person提供大舉的唯一方法就是給出Person的整個json。有沒有辦法讓每個獨立的領域,例如它的名字/姓氏單獨輸入?

回答

1

如果您使用註釋您@ModelAttribute操作應該做你尋找什麼

對於例如而不是

public void updatePersonName(@RequestBody Person person) { ... } 

使用此

public void updatePersonName(@ModelAttribute Person person) { ... } 

的@ModelAttribute將擴大基本屬性,並進入在招搖UI的姓氏和名字提供領域。相當於那個操作是

public void updatePersonName(@RequestParam String firstName, 
          @RequestParam String lastName) { ... } 
+0

不幸的是這不會發生。我爲此提出了一個問題 – Eugene 2015-08-05 11:26:43

+0

鏈接?它應該工作,警告你的模型屬性需要* getter和setter * bean屬性*。 – 2015-08-05 13:10:49

+0

如果不是setter有構造函數,那麼該類是不可變的。這是否應該工作? – Eugene 2015-08-09 11:07:27

0

我也使用默認的swagger UI的swagger,我不認爲這是可能的,除非你更改swagger UI代碼。但一個非常方便的解決方案是定義參數的類型,然後提供該類型的模型。例如

"parameters": [ 
       { 
        "in": "body", 
        "name": "body", 
        "description": "A Person", 
        "required": true, 
        "type": "Person" 
       } 
      ] 

然後

"definitions": { 
    "Person": { 
     "properties": { 
      "firstName": { 
       "type": "string" 
      }, 
      "lastName": { 
       "type": "string" 
      } 
     } 
     } 
    } 

這樣的模型出現在用戶界面,你可以很容易地將其複製到請求主體文本和手動與內容填充它。

+0

雅如果只是在哪裏有一個選項:) thx雖然 – Eugene 2014-11-14 14:40:18