1

在运行时,将为我的应用程序提供一个字符串,该字符串可能是我的应用程序提供的有效 URL(per 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 数组。

4

1 回答 1

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()
于 2013-08-28T04:03:23.010 回答