Wie werden in Swagger dynamisch registrierte Routen in einer Java-Webflux-Anwendung angezeigt?Java

Java-Forum
Guest
 Wie werden in Swagger dynamisch registrierte Routen in einer Java-Webflux-Anwendung angezeigt?

Post by Guest »

Ich erstelle eine Demo-Anwendung, in der ich meine Endpunkte dynamisch mithilfe eines Endpunkt-Registrators registriere, der auf von mir instanziierten Controller-Beans basiert. Daher gibt es keine Anmerkungen, die das Spring-Dokument aufnehmen muss, um sich für den Swagger und die Benutzeroberfläche zu registrieren.
Ich hatte die gleiche Übung auf ähnliche Weise mit einer Spring-MVC-Anwendung durchgeführt und war dazu in der Lage um diese Controller mit der statischen Methode org.springdoc.api.AbstractOpenApiResource.addRestControllers wie folgt zu registrieren:

Code: Select all

@Bean
public OpenAPI api() {

OpenAPI openAPI = new OpenAPI()

.addServersItem(new Server().url("/").description("Default Server URL"))
.info(new Info()
.title("DEMO App")
.description("Demo Application")
.contact(new Contact()
.name("Philip G. Nahmias")
.email("nahmias22@gmail.com")));

List controllers = new ArrayList();
applicationContext.getBeansWithAnnotation(RequestMapping.class).forEach((k, v) -> {
if (!k.endsWith("ErrorController")) {
controllers.add(v.getClass());
}
});
addRestControllers(controllers.toArray(new Class[0]));
return openAPI;
}
Aber dieser Ansatz funktioniert nicht für die reaktive Anwendung, und ich wollte fragen, ob es einen ähnlichen Ansatz gibt, den ich verwenden könnte?
Hier als Referenz ist ein von mir definierter Beispielendpunkt, der alle relevanten Swagger-Anmerkungen enthält:

Code: Select all

@RequestMapping(method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
@Operation(summary = "Post Request")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "Made request:", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE)),
@ApiResponse(responseCode = "500", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE)),
@ApiResponse(responseCode = "403", description = "Access Forbidden",
content = @Content(mediaType = "application/json"))
})
public ResponseEntity testPost() {
return ResponseEntity.ok("ok");
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post