Spring + Swagger:多部分表单

时间:2018-05-04 14:15:42

标签: spring spring-boot swagger springfox

我正在将一个多部分表单发布到Spring Boot应用程序。

E.g。

@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-招摇的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,建议进行更改。我将根据结果更新/回答这个问题。

1 个答案:

答案 0 :(得分:0)

是的。这是一个错误。现在已修复(在2.9.1中)。