Код: Выделить всё
@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
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 , но запрос не содержит заголовка, он не удастся с некоторой ошибкой проверки.
Подробнее здесь: https://stackoverflow.com/questions/796 ... erfunction