在 Spring Boot WebFlux 上检索路径变量(功能方法)
Posted
技术标签:
【中文标题】在 Spring Boot WebFlux 上检索路径变量(功能方法)【英文标题】:Retrieve path variable on Spring Boot WebFlux (functional approach) 【发布时间】:2019-01-06 06:00:15 【问题描述】:假设我有这个路由器定义:
@Component
class PersonRouter(private val handler: PersonHandler)
@Bean
fun router(): RouterFunction<ServerResponse> = router
("/api/people" and accept(MediaType.APPLICATION_JSON_UTF8)).nest
GET("/id") handler.findById(it)
然后是这个处理程序:
@Component
@Transactional
class PersonHandler(private val repository: PersonRepository)
private companion object : KLogging()
@Transactional(readOnly = true)
fun findById(req: ServerRequest): Mono<ServerResponse>
logger.info "$req.method() $req.path()"
val uuid = ? // req.pathContainer().elements().last().value()
return ServerResponse.ok()
.contentType(MediaType.APPLICATION_JSON_UTF8)
.body(BodyInserters.fromObject(repository.findById(uuid)))
.switchIfEmpty(ServerResponse.notFound().build())
我如何从ServerRequest
访问标识符(典型的@RestController
上的@PathVariable id: String
)而不使用正则表达式、繁重的字符串等操作?
【问题讨论】:
我不知道你想要实现什么,但 WebFlux 目前不支持事务注释。 【参考方案1】:啊!找到了!
通过这样做:req.pathVariable("id")
它一直都在那里......在官方Spring Framework(Web Reactive)文档中!
【讨论】:
以上是关于在 Spring Boot WebFlux 上检索路径变量(功能方法)的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot 自动配置的 Jackson ObjectMapper 默认不用于 WebFlux WebClient
如何在 Spring Boot WebFlux 中使用 GET 请求注销
如何在 Spring Boot WebFlux 上使用 AWS X-Ray 跟踪传入请求?
如何在 Spring boot 2 + Webflux + Thymeleaf 中配置 i18n?
带有 Webflux 的 Spring Boot:请求的资源上不存在“Access-Control-Allow-Origin”标头