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) 呈现端点。依赖项:

但是,它将整个主体渲染为一个字段:

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 中)。