Spring + Swagger:多部分形式
Spring + Swagger: Multipart form
我正在将多部分表单发布到 Spring 启动应用程序。
例如
@PostMapping(value = "/foo", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public void postFooAsMultiPart(@RequestBody Foo foo) {
...
}
Spring 在将多部分请求编组到一个对象方面做得非常好 (StandardServletMultipartResolver
)。
我正在使用 Swagger(Springfox) 呈现端点。依赖项:
- io.springfox:springfox-swagger2:2.8.0
- io.springfox:springfox-swagger-ui:2.8.0
但是,它将整个主体渲染为一个字段:
http://localhost:8080/v2/api-docs
...
"parameters": [
{
"in": "body",
"name": "foo",
"description": "foo",
"required": true,
"schema": {
"$ref": "#/definitions/Foo"
}
}
],
...
我的问题是:是否可以让 Swagger 将 Foo 的每个属性呈现为单独的参数?
注意:作为解决方法,我使用 @ApiImplicitParams
在控制器级别指定 Foo 的所有属性。但是我认为这更像是一种解决方法,而不是正确的解决方案。
编辑
我花了一些时间研究代码,我很确定当前版本无法做到这一点。我在 GitHub 存储库上打开了 an issue,建议进行更改。我会 update/answer 这个问题取决于结果。
是的。这是一个错误。现已修复(在 2.9.1 中)。
我正在将多部分表单发布到 Spring 启动应用程序。
例如
@PostMapping(value = "/foo", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public void postFooAsMultiPart(@RequestBody Foo foo) {
...
}
Spring 在将多部分请求编组到一个对象方面做得非常好 (StandardServletMultipartResolver
)。
我正在使用 Swagger(Springfox) 呈现端点。依赖项:
- io.springfox:springfox-swagger2:2.8.0
- io.springfox:springfox-swagger-ui:2.8.0
但是,它将整个主体渲染为一个字段:
http://localhost:8080/v2/api-docs
...
"parameters": [
{
"in": "body",
"name": "foo",
"description": "foo",
"required": true,
"schema": {
"$ref": "#/definitions/Foo"
}
}
],
...
我的问题是:是否可以让 Swagger 将 Foo 的每个属性呈现为单独的参数?
注意:作为解决方法,我使用 @ApiImplicitParams
在控制器级别指定 Foo 的所有属性。但是我认为这更像是一种解决方法,而不是正确的解决方案。
编辑 我花了一些时间研究代码,我很确定当前版本无法做到这一点。我在 GitHub 存储库上打开了 an issue,建议进行更改。我会 update/answer 这个问题取决于结果。
是的。这是一个错误。现已修复(在 2.9.1 中)。