二十一、springboot之定制URL匹配规则(项目中遇到的问题:get方式传参,带有小数点,被忽略)
一、问题描述:
get方式传参,在传送价格,积分时(带有小数点),debug后台微服务接受到的参数,却不带小数点,如:price是0.55,后台接受后却是0
二、解决
在WebConfiguration类中添加对应的配置
@Configuration public class WebMvcConfig extends WebMvcConfigurerAdapter { private static Logger log = LoggerFactory.getLogger(WebMvcConfig.class); @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { log.debug("加载静态资源处理路径"); super.addResourceHandlers(registry); } @Override public void configurePathMatch(PathMatchConfigurer configurer) { configurer.setUseSuffixPatternMatch(false); super.configurePathMatch(configurer); } }
三、Spring Boot:定制URL匹配规则
构建web应用程序时,并不是所有的URL请求都遵循默认的规则。有时,我们希望RESTful URL匹配的时候包含定界符“.”,这种情况在Spring中可以称之为“定界符定义的格式”;有时,我们希望识别斜杠的存在。Spring提供了接口供开发人员按照需求定制。
在之前的几篇文章中,可以通过WebConfiguration类来定制程序中的过滤器、格式化工具等等,同样得,也可以在这个类中用类似的办法配置“路径匹配规则”。
分析
configurePathMatch(PathMatchConfigurer configurer)函数让开发人员可以根据需求定制URL路径的匹配规则。
- configurer.setUseSuffixPatternMatch(true)表示设计人员希望系统对外暴露的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,但是这种需求并不常见。
参考:https://www.jianshu.com/p/02bff08fcced