springboot项目中接口代码是@PostMapping("/addAdvert") @ApiOperation(value = "新增广告") @ApiImplicitParams({ @ApiImplicitParam(name = "advertDto", value = "广告对象", dataType = "AdvertDTO", paramType = "body"), @ApiImplicitParam(name = "file", value = "文件", dataType = "__file", paramType = "form") }) public JsonData<String> addAdvert(@RequestBody AdvertDTO advertDto, MultipartFile file),配置是public Docket createRestApi(Environment environment) { // 设置要显示swagger的环境 Profiles of = Profiles.of("dev", "test"); // 判断当前是否处于该环境 // 通过 enable() 接收此参数判断是否要显示 boolean b = environment.acceptsProfiles(of); ParameterBuilder tokenPar = new ParameterBuilder(); List<Parameter> pars = new ArrayList<Parameter>(); tokenPar.name("token").description("令牌").modelRef(new ModelRef("string")).parameterType("header").required(false) .defaultValue("38750c3c941c20bc1eaf204e5a868ecb").build(); pars.add(tokenPar.build()); return new Docket(DocumentationType.SWAGGER_2) .enable(b) .apiInfo(apiInfo()) .select() //为当前包路径 .apis(RequestHandlerSelectors.basePackage("com.ruifan.taihaolian")) .paths(PathSelectors.any()) .build() .globalOperationParameters(pars) .directModelSubstitute(MultipartFile.class, byte[].class); },Swagger2调用该接口报错Content type 'multipart/form-data;boundary=----WebKitFormBoundaryubXGS6xpNFd3ij0f;charset=UTF-8' not supported
时间: 2024-01-18 09:02:55 浏览: 120
示例代码-SpringBoot踩坑记录:玩转@Value注解-自定义PropertySourcesPlaceHolderConfigurer.zip
根据你提供的代码和错误信息,我猜测你的 Swagger2 没有配置支持文件上传的插件,导致无法解析 Content-Type 为 multipart/form-data 的请求。你可以添加 springfox-swagger2 和 springfox-swagger-ui 依赖,并在 Docket 配置中启用文件上传的支持:
```java
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.ruifan.taihaolian"))
.paths(PathSelectors.any())
.build()
.consumes(Sets.newHashSet("multipart/form-data"))
.produces(Sets.newHashSet("application/json"))
.directModelSubstitute(byte[].class, String.class)
.useDefaultResponseMessages(false)
.globalOperationParameters(getGlobalParameters());
}
```
其中 `consumes` 和 `produces` 分别设置了请求和响应的 Content-Type,`directModelSubstitute` 用于将 MultipartFile 类型的参数替换为 byte[] 类型,`useDefaultResponseMessages` 设置为 false 可以禁用 Swagger2 的默认响应信息。
阅读全文