本文首发于个人网站:http://www.javaadu.online/?p=649
构建web应用程序时,并不是所有的URL请求都遵循默认的规则。有时,我们希望RESTful URL匹配的时候包含定界符“.”,这种情况在Spring中可以称之为“定界符定义的格式”;有时,我们希望识别斜杠的存在。Spring提供了接口供开发人员按照需求定制。
在之前的几篇文章中,可以通过WebConfiguration类来定制程序中的过滤器、格式化工具等等,同样得,也可以在这个类中用类似的办法配置“路径匹配规则”。
假设ISBN格式允许通过定界符“.”分割图书编号和修订号,形如[isbn-number].[revision]
实战
- 在WebConfiguration类中添加对应的配置,代码如下:
- 通过mvn spring-boot:run启动应用程序
- 访问http://localhost:8080/books/9781-1234-1111.1
- 访问http://localhost:8080/books/9781-1234-1111
分析
configurePathMatch(PathMatchConfigurer configurer)函数让开发人员可以根据需求定制URL路径的匹配规则。
- configurer.setUseSuffixPatternMatch(false)表示设计人员希望系统对外暴露的URL不会识别和匹配.后缀。在这个例子中,就意味着Spring会将9781-1234-1111.1当做一个isbn*参数传给BookController。
- configurer.setUseTrailingSlashMatch(true)表示系统不区分URL的最后一个字符是否是斜杠/。在这个例子中,就意味着http://localhost:8080/books/9781-1234-1111和http://localhost:8080/books/9781-1234-1111/含义相同。
如果需要定制path匹配发生的过程,可以提供自己定制的PathMatcher和UrlPathHelper,但是这种需求并不常见。
Spring Boot 1.x系列
- http://www.javaadu.online/?p=487
- http://www.javaadu.online/?p=495
- http://www.javaadu.online/?p=499
- http://www.javaadu.online/?p=515
- http://www.javaadu.online/?p=518
- http://www.javaadu.online/?p=521
- http://www.javaadu.online/?p=526
- http://www.javaadu.online/?p=530
- http://www.javaadu.online/?p=535
- http://www.javaadu.online/?p=538
- http://www.javaadu.online/?p=546
- http://www.javaadu.online/?p=575
- http://www.javaadu.online/?p=588
- http://www.javaadu.online/?p=590
- http://www.javaadu.online/?p=593
- http://www.javaadu.online/?p=633
- http://www.javaadu.online/?p=637
- http://www.javaadu.online/?p=646
本号专注于后端技术、JVM问题排查和优化、Java面试题、个人成长和自我管理等主题,为读者提供一线开发者的工作和成长经验,期待你能在这里有所收获。