Ich benutze ein JAX-RS (RestEasy) zusammen mit einem Swagger. Einer meiner Endpunkte kann eine Datei hochladen. Definierter Weg um die Datei hochzuladen (in RestEasy), ist eine org.jboss.resteasy.plugins.providers.multipart.MultipartFormDataInput
als Parameter anzugeben.Swagger UI unterstützt nicht das korrekte Hochladen einer Datei für RestEasy
Hier ist mein Endpunkt:
@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;
Was ist das Problem?
Leider generiert swagger-ui ein Schema basierend auf den inneren Eigenschaften des MultipartFormDataInput
anstelle einer Schaltfläche zum Hochladen der Datei. Ich habe versucht, eine @FormParam
Annotation (um anzuzeigen, dass der Bereitstellungsparameter als Datei interpretiert werden soll) zusammen mit dem MultipartFormDataInput
Parameter, aber dann möchte die App nicht kompilieren.
Frage: Gibt es eine Lösung/Workaround, um die Schaltfläche zum Hochladen der Datei im Swagger-Ui bereitzustellen?
Wenn wir '@ ApiParam' zu entfernen, gibt es zwei Felder:' apiId', 'body' mit den inneren Eigenschaften des' MultipartFormDataInput' und die Taste, um die Datei in der Prahlerei-ui hochladen. Dieser "Körper" ist ein Nebeneffekt. Ich werde die Antwort einschließlich der endgültigen Lösung, wie dieser Nebeneffekt behoben werden. – Robert