![f4ffd454fd0d4e93bfde518233924253.png](https://i-blog.csdnimg.cn/blog_migrate/2ef09a234f1611e7f84916bf25a9b612.jpeg)
【SpringBoot WBE 系列】WebFlux 之 Path 参数解析与 url 映射
异步、反应式、函数式编程,近来可以说是逐渐主流了;Spring5 通过 Reactor 增加了对反应式编程的支持,而 Spring WebFlux 不同于以往的 web 框架,作为一个非阻塞异步 web 框架,可以充分的利用多核 CPU 硬件资源,提供更强的并发支持;Spring 官方对 WebFlux 的支持非常友好,基本上对于惯于 Spring WEB 的 java 开发者,可以很简单的迁移过来
接下来我们将进入 WebFlux 系列教程,努力使用最简明的语言,来介绍一下 WebFlux 的基本玩法,让各位小伙伴可以顺畅的切换和使用 WebFlux 来体验反应式编程的魅力
本文将主要介绍 WebFlux 提供 web 接口时的 url 匹配,以及对应的 path 参数解析
I. 项目环境
本项目借助SpringBoot 2.2.1.RELEASE
+ maven 3.5.3
+ IDEA
进行开发
1. 依赖
使用 WebFlux,最主要的引入依赖如下(省略掉了 SpringBoot 的相关依赖,如对于如何创建 SpringBoot 项目不太清楚的小伙伴,可以关注一下我之前的博文)
<dependencies>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webfluxartifactId>
dependency>
dependencies>
II. Path 匹配与参数解析
下面所有内容基于官方文档完成: https://docs.spring.io/spring/docs/current/spring-framework-reference/web-reactive.html#webflux-ann-requestmapping-uri-templates
下面的示例主要是基于注解的方式,基本知识点和 SpringWeb 没有太大的区别(至于函数式的用法,后面会专门介绍)
1. 基本 path 参数获取
path 参数,举例如: http://127.0.0.1:8080/name/test
中name
和test
就算是 path 参数,我们主要是借助@PathVariable
来获取
一个具体实例
@RestController
@RequestMapping(path = "path")
public class PathAction {
/**
* 最基本的path获取方式
*
* @param index
* @return
*/
@GetMapping(path = "/basic/{index}")
public Mono basic(@PathVariable(name = "index") int index) {
return Mono.just("path index: " + index);
}
}
针对上面的 case,我们简单的设计了三个访问 case,具体结果如下
➜ ~ curl 'http://127.0.0.1:8080/path/basic/1'
path index: 1%
➜ ~ curl 'http://127.0.0.1:8080/path/basic/1/2'
{
"timestamp":"2020-08-26T13:35:26.221+0000","path":"/path/basic/1/2","status":404,"error":"Not Found","message":null,"requestId":"8256bf73"}%
➜ ~ curl 'http://127.0.0.1:8080/path/basic/'
{
"timestamp":"2020-08-26T13:35:32.196+0000","path":"/path/basic/","status":404,"error":"Not Found","message":null,