Swagger在发布请求中找不到没有@RequestBody的模型

时间:2020-01-15 04:30:51

标签: spring-boot swagger swagger-ui

在我的项目中我使用带有启动功能的springboot。我创建了这样的post方法:

@RequestMapping("/ufile")
@Api(value = "文件服务", tags = {"文件服务"})
public class UfileController extends BaseApiController {

    private static final Logger logger = LoggerFactory.getLogger(UfileController.class);

    @ApiOperation(value = "文件上传", response = ApiResponse.class)
    @PostMapping(value = "/upload", produces = "application/json;charset=utf-8")
    public ApiResponse upload(@Valid @RequestBody UploadRequest uploadRequest, @ApiIgnore HttpServletResponse response
            , @RequestParam(value = "protocol", defaultValue = "thrift", required = false) @ApiIgnore String protocol) {
           .......
    }
}

在上面的代码中,我在模型UploadRequest中使用了@RequestBody。 这就是模型 UploadRequest

@Data
@ApiModel("文件上传请求")
public class UploadRequest extends BaseRequest {

    @ApiModelProperty(value = "上传的文件", name = "上传的文件")
    @NotEmpty
    private MultipartFile[] multipartFiles;

    @ApiModelProperty(value = "租户id", name = "租户id")
    @NotBlank
    private String tenantId;

    @ApiModelProperty(value = "图片是否需要对应水印图片", name = "图片是否需要对应水印图片")
    private boolean needWaterMark;
}

Swagger在此场景中运行良好,找到了ApiModel UploadRequest ,当我访问swagger-ui.html时,我可以看到: enter image description here

但是当我在模型UploadRequest中不使用@RequestBody时,swagger找不到 UploadRequest 。当我访问swagger-ui时,<<中没有 UploadRequest strong>型号标签。 enter image description here

我想要的是当我像这样更改代码时

@RestController
@RequestMapping("/ufile")
@Api(value = "文件服务", tags = {"文件服务"})
public class UfileController extends BaseApiController {

    private static final Logger logger = LoggerFactory.getLogger(UfileController.class);

    @ApiOperation(value = "文件上传", response = ApiResponse.class)
    @PostMapping(value = "/upload", produces = "application/json;charset=utf-8")
    public ApiResponse upload(@Valid UploadRequest uploadRequest, @ApiIgnore HttpServletResponse response
            , @RequestParam(value = "protocol", defaultValue = "thrift", required = false) @ApiIgnore String protocol) {

    }
}

swagger仍然可以找到ApiModel UploadRequest。当我访问swagger-ui.html时,标签 Model 包含UploadRequest。

请问谁能帮助我。

1 个答案:

答案 0 :(得分:1)

您的要求对我来说有点含糊。 顺便说一句,当您使用@RequestBody批注时,它只是将Http请求的主体绑定到模型对象。简而言之,当您避免使用该注释时,您将错过一个请求发送的任何http请求的正文内容,因此,您不会大张旗鼓。而已。 如果您需要更多说明或其他说明,请提及。