在运行时,我的应用程序将提供一个字符串,可能是我的应用程序所服务的有效URL(每UrlMappings.groovy
),或者可能不是。我想确定是哪种情况。
我是否有办法手动将Grails路由逻辑应用于URL,并查看它映射到哪个控制器/参数(如果有)?
为了清楚起见,我们说UrlMappings
是:
"/path/one" (controller:"api", action:"one")
"/path/two" (controller:"api", action:"two")
"/variable/$segment/1" (controller:"api", action:"var")
现在我的应用程序在运行时收到一个字符串,其值为“/ path / fake” - 我可以针对所有已知路由的列表测试“/ path / fake”以确定它不匹配吗? (或者,我可以测试“/ variable / segA / 1”并确定它与我的API控制器的“var”操作相关联吗?“
注意:我正在寻找适用于带变量等的路径的解决方案 - 并将使用这些变量填充params数组。
答案 0 :(得分:1)
使用UrlMappings
检查grailsApplication
中可用的映射列表中是否存在映射,这些映射可以很容易地插入到控制器/服务等伪像中。
def allMappings = grailsApplication.allClasses
.find{it.name == "UrlMappings"}.mappings.urlMappings
assert '/path/one' == allMappings.find{it.toString() == "/path/one"}?.toString()
assert !allMappings.find{it.toString() == "/path/fake"}?.toString()