2014-11-14 47 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