Spring Boot实战之定制URL匹配规则

本文首发于我的网站:Spring Boot实战之定制URL匹配规则java

构建web应用程序时,并非全部的URL请求都遵循默认的规则。有时,咱们但愿RESTful URL匹配的时候包含定界符“.”,这种状况在Spring中能够称之为“定界符定义的格式”;有时,咱们但愿识别斜杠的存在。Spring提供了接口供开发人员按照需求定制。web

在以前的几篇文章中,能够经过WebConfiguration类来定制程序中的过滤器、格式化工具等等,一样得,也能够在这个类中用相似的办法配置“路径匹配规则”。面试

假设ISBN格式容许经过定界符“.”分割图书编号和修订号,形如[isbn-number].[revision]spring

实战

  • 在WebConfiguration类中添加对应的配置,代码以下:
@Override
public void configurePathMatch(PathMatchConfigurer configurer) {
    configurer.setUseSuffixPatternMatch(false).setUseTrailingSlashMatch(true);
}
  • 经过mvn spring-boot:run启动应用程序
  • 访问http://localhost:8080/books/9781-1234-1111.1

在路径匹配时,不使用后缀模式匹配(.*)

  • 访问http://localhost:8080/books/9781-1234-1111

使用正确的URL访问的结果

分析

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-1111http://localhost:8080/books/9781-1234-1111/含义相同。

若是须要定制path匹配发生的过程,能够提供本身定制的PathMatcherUrlPathHelper,可是这种需求并不常见。框架

Spring Boot 1.x系列

  1. Spring Boot的自动配置、Command-line-Runner
  2. 了解Spring Boot的自动配置
  3. Spring Boot的@PropertySource注解在整合Redis中的使用
  4. Spring Boot项目中如何定制HTTP消息转换器
  5. Spring Boot整合Mongodb提供Restful接口
  6. Spring中bean的scope
  7. Spring Boot项目中使用事件派发器模式
  8. Spring Boot提供RESTful接口时的错误处理实践
  9. Spring Boot实战之定制本身的starter
  10. Spring Boot项目如何同时支持HTTP和HTTPS协议
  11. 自定义的Spring Boot starter如何设置自动配置注解
  12. Spring Boot项目中使用Mockito
  13. 在Spring Boot项目中使用Spock测试框架
  14. Spring Boot项目中如何定制拦截器
  15. Spring Boot项目中如何定制PropertyEditors
  16. Spring Boot构建的Web项目如何在服务端校验表单输入
  17. Spring Boot应用的健康监控
  18. Spring Boot项目中如何定制servlet-filters

本号专一于后端技术、JVM问题排查和优化、Java面试题、我的成长和自我管理等主题,为读者提供一线开发者的工做和成长经验,期待你能在这里有所收获。
javaaduide

相关文章
相关标签/搜索