gpt4 book ai didi

spring - 是否可以在 Swagger 中使用模型上传 MultipartFile? (在评论 415 Unsupported Media Type Resolved 中)

转载 作者:行者123 更新时间:2023-12-05 04:54:43 25 4
gpt4 key购买 nike

我正在使用最后一个(也是唯一一个)

 <dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>

带 Spring Boot

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>

我希望能够在一个 Controller 中上传文件和模型,所以我创建了一个: image

在这种情况下,在 swagger-ui 上我只看到没有模型的文件上传: image

我在 postman 中试过这个案例,效果很好 image

这是一个错误吗?或者我应该添加一些其他注释以使其工作吗?

最佳答案

问题出在 Docket Bean 的配置类中。在这里,我正在定义到我的 Controller 的路由,以将其他 Controller 排除在 swagger-ui 之外。问题出在DocumentationType,OpenApi3.0在维护多类型文件上传,而Swagger2没有。

enter image description here

我面临的下一个问题是:

415 Unsupported Media Type

解决方案:

第一种方式:如果您将使用 postman/javaScript 框架 -> 您必须定义每个 RequestPart 的媒体类型(实际上不需要文件,文件将自动设置)。 postman 中的例子: enter image description here

第二种方式:实现八位流的维护,因为spring在AbstractMessageConverterMethodArgumentResolver.class中默认设置了如果请求部分没有content-type header。(我正在使用 spring-boot-starter-parent 2.4.1 -> spring-webmvc 5.3.2) Y

所以这是我发现的 2 个案例(将响应 JSON 映射到 DTO):

1 例(不推荐):设置对 JSON 转换器的支持: enter image description here

2 例:定义新的 Converter 类,它肯定适用于所需的类(在我的例子中它是 MDVersionDTO.class)并且当它像 octet-stream,为了实现它,ovveride canRead() 方法。 enter image description here


SPRING-BOOT 2.7.0 更新

再次面对,现在 DocumaentationType.OAS_30 不工作......所以,要解决:

  1. 我实现了相同的 MultipartJSONConverter 并使其成为@Component
  2. 我使用了 DocumentationType.SWAGGER_2
  3. 删除了@RequestBody 注释并像这样使用: enter image description here

在这种情况下,您将能够上传带有请求正文的文件,但您将没有 swagger 中的模型示例,它将是空的。 enter image description here

关于spring - 是否可以在 Swagger 中使用模型上传 MultipartFile? (在评论 415 Unsupported Media Type Resolved 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65666648/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com