spring引导:我们可以使用regex将部分请求Map作为可选的吗?

eqzww0vc  于 2021-07-09  发布在  Java
关注(0)|答案(0)|浏览(295)

我有一个具有多个请求Map的端点,如:

@PutMapping(path = {
       "/A/{ACode}/B/{BCode}/C/{CCode}/D/{DCode}",
       "/A/{ACode}/B/{BCode}/D/{DCode}",
       "/A/{ACode}/C/{CCode}/D/{DCode}",
       "/A/{ACode}/D/{DCode}"
})

其中acode、bcode、ccode和dcode都是路径变量。b、 c和它们各自的代码是可选的,而a、d和它们各自的代码是强制性的。
我可以通过以下方式调用上述api:

PUT /A/IN/B/delhi/C/central/D/110001
PUT /A/IN/B/delhi/D/110001
PUT /A/IN/C/central/D/110001
PUT /A/IN/D/110001

我正在尝试将所有这些请求Map组合到一个可以匹配所有这些组合的regex中。
我尝试在Map中使用此正则表达式,但它不起作用:

@PutMapping(path = {
       "A/{ACode:[A-Z]+}(/B/{BCode:[a-z0-9-]+})?(/C/{CCode:[a-z0-9-]+})?/D/{DCode:[a-z0-9-]+}"
})

这一个可以工作,但它不能使b,c和各自的代码可选,所以不能使用:

@PutMapping(path = {
       "A/{ACode:[A-Z]+}/B/{BCode:[a-z0-9-]+}/C/{CCode:[a-z0-9-]+}/D/{DCode:[a-z0-9-]+}"
})

我使用的regex有什么问题吗?或者除了使用请求参数代替路径变量之外,还有什么解决方法来实现这种功能吗?
谢谢你的帮助!

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题