有没有办法在每个字段都有输入的情况下大摇大摆地呈现复杂对象的请求正文?
简单来说,如果我的一个 api 需要一个 Person(假设它只有一个名字/姓氏)作为 @RequestBody,那么为这个 Person 提供招摇的唯一方法就是提供 Person 的整个 json。例如,有没有办法让每个单独的字段分别输入名字/姓氏?
有没有办法在每个字段都有输入的情况下大摇大摆地呈现复杂对象的请求正文?
简单来说,如果我的一个 api 需要一个 Person(假设它只有一个名字/姓氏)作为 @RequestBody,那么为这个 Person 提供招摇的唯一方法就是提供 Person 的整个 json。例如,有没有办法让每个单独的字段分别输入名字/姓氏?
如果您使用@ModelAttribute
它来注释您的操作应该完全符合您的要求
例如,而不是
public void updatePersonName(@RequestBody Person person) { ... }
用这个
public void updatePersonName(@ModelAttribute Person person) { ... }
@ModelAttribute 将扩展原始属性并提供用于在 swagger ui 中输入名字和姓氏的字段。该操作的等价物是
public void updatePersonName(@RequestParam String firstName,
@RequestParam String lastName) { ... }
我还在使用带有默认 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"
}
}
}
}
这样模型就会出现在 UI 中,您可以轻松地将其复制到请求正文文本框并手动填充内容。