我使用JAX-RS(RestEasy)以及Swagger。我的一個端點可以上傳文件。上傳文件的定義方式(在RestEasy中)是提供一個org.jboss.resteasy.plugins.providers.multipart.MultipartFormDataInput
作爲參數。Swagger UI不支持正確上傳文件的RestEasy
這裏是我的終點:
@PUT
@Path("/apis/{id}/file")
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.APPLICATION_JSON)
@ApiOperation(value = "Registers a file.", code = 201, nickname = "registerFile")
@ApiResponses(
value = {
@ApiResponse(code = 201, message = "File created.",
response = FileCreated.class),
@ApiResponse(code = 400, message = "Invalid parameters."),
@ApiResponse(code = 404, message = "API is not found.")})
Response registerFile(
@ApiParam(value = "API ID.", required = true) @PathParam("id") String apiId,
@ApiParam(value = "File to register.", required = true, type = "file", name = "apiFile")
MultipartFormDataInput apiFile) throws AppException;
問題是什麼?
不幸的是,swagger-ui根據MultipartFormDataInput
的內部屬性生成模式,而不是上傳文件的按鈕。 我嘗試使用@FormParam
註釋(指示提供參數應解釋爲文件)以及MultipartFormDataInput
參數,但該應用程序不想編譯。
問題:是否有任何解決方案/解決方法來提供上傳swagger-ui中的文件的按鈕?
如果我們去掉'@ ApiParam',有兩個字段:'apiId','body'用'MultipartFormDataInput'和按鈕的內部性能上載在招搖的UI文件。這個「身體」是一個副作用。我會發布答案,包括如何解決這一副作用的最終解決方案。 – Robert