Openapi V3 Doc для заголовков от Spring @RestController до маршрутизацииJAVA

Программисты JAVA общаются здесь
Anonymous
Openapi V3 Doc для заголовков от Spring @RestController до маршрутизации

Сообщение Anonymous »

Я хотел бы сохранить документацию OpenAPI V3 для заголовков с использованием Spring Boot RouterFunction , а также сохранение читаемости, если это возможно.

Код: Выделить всё

@SpringBootApplication
public class WhiskyApplication {

public static void main(String[] args) {
SpringApplication.run(WhiskyApplication.class, args);
}

}

< /code>
public record Whisky(UUID id, String bottle, String price, String rating, String region) {
}
и это @restcontroller construct:

Код: Выделить всё

@RestController
class WhiskyController {

@Operation(description = "Some cool description, hope not to be lost with Router", summary = "Some cool summary, hope not to be lost with Router")
@PostMapping("/api/whiskies/{id}")
ServerResponse getAWhiskyById(@RequestHeader(value = "X-MyCool-Header", required = false) @Parameter(description = "Some description about the header, hope not to be lost with Router") final String myCoolHeader) {
dosomethingWithHeader(myCoolHeader);
return ...;
}

}
< /code>
с @restcontroller < /code> мы могли бы: < /p>
[list]
[*]  аннотировать возможные заголовки конечной точки REST. Разработчики только что придут в код, посмотрите на все @Requestheader 
, и посмотрите, каковы возможные заголовки для конечной точки.

[*] может настроить, если заголовок требуется или не использует требуемый from @requesthead

. @Parameter , чтобы предоставить описание, которое будет отображаться в Swagger для документа OpenApi V3.

[/list]
По бизнес -причинам мы преобразуем наш @restcontroller , чтобы использовать новую пружинную функцию
pre-1 pre> pre> pre> Class = "Lang-Java PrettyPrint-Override">

Код: Выделить всё

@Configuration
public class RouterConfiguration {

@Bean
//where to put @RequestHeader
//where to add the Swagger information
public RouterFunction whiskiesRouter(WhiskyHandler whiskyHandler) {
return route()
.GET("/api/whiskies/{id}", whiskyHandler::getAWhiskyById)
.build();
}

}
< /code>
@Component
public class WhiskyHandler {

//where to put @RequestHeader
//where to add the Swagger information
public ServerResponse getAWhiskyById(ServerRequest serverRequest) {
// it seems getting the header is now inside the method body, not from method signature
serverRequest.headers();
return ServerResponse
.ok()
.body(...);
}

}
конечная точка все еще работает, но:
  • Я надеялся использовать @operation (description = @parameter (description =
    I. Можно видеть заголовки в подписи метода, не обращаясь к телу метода, чтобы Parse ServerRequest.Headers ();
  • Похоже на @requestheader (value = "x-mycool-header", требуется = false) . = true , но запрос не содержит заголовка, он не удастся с некоторой ошибкой проверки.
Как иметь возможность подтвердить, требуется ли заголовок, а также сгенерировать Swagger, openapi v3 для него, при использовании routerfunction ?>

Подробнее здесь: https://stackoverflow.com/questions/796 ... erfunction

Вернуться в «JAVA»