【问题标题】:Spring + Swagger: Multipart formSpring + Swagger:多部分形式
【发布时间】:2018-05-04 14:15:42
【问题描述】:

我正在向 Spring Boot 应用程序发布多部分表单。

例如

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

【问题讨论】:

  • 我相信,如果您删除了@RequestBody 注释,它应该可以在无需添加@ApiImplicitParams 注释的情况下工作。
  • @DilipKrishnan 如果我这样做,它会将属性添加为查询参数,然后大摇大摆地以这种方式发送它们。例如。 { "name": "bar", "in": "query", "description": "Bar description", "required": false, "type": "string" }

标签: spring spring-boot swagger springfox


【解决方案1】:

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

【讨论】:

  • 是的,但是现在如果您有简单字段和上传字段,则无法添加这些字段的顺序并使其成为必需。你有解决方案吗?
猜你喜欢
  • 1970-01-01
  • 2014-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-15
  • 2013-10-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多