Coldbox路由动态路径变量的数量

时间:2014-08-01 19:16:51

标签: coldfusion coldbox

我正在开发一个冷箱应用程序,我想创建一个接受'n'个路径变量作为一个变量的路由。这就是我的意思。

http://localhost/api/variable1/variable2/variable3/...

我希望能够在/api之后抓取所有内容作为一个路径变量,我可以在/上拆分并获取值,或者能够在{{1}之后迭代所有变量}。

有没有办法设置路线来执行此操作?

/api

任何想法都会受到最高的赞赏。提前谢谢。

1 个答案:

答案 0 :(得分:5)

您可能知道,默认路由范例是执行名称值对,如下所示:

http://localhost/api/name1/value1/name2/value2/name3/value3

无需为此创建自定义路由,因为路由的匹配部分之后的所有内容都会分解为名称/值对并自动放入rc中。

现在,听起来你只想在你的路线中拥有价值观。如果你知道你将拥有的最大变量数,你可以创建一个可选的,递增命名变量的路由。

addRoute(pattern="/:var1?/:var2?/:var3?/:var4?/:var5?", action="index")

现在,如果你真的可能拥有无限数量的变量,那么就无法做出与之匹配的路线。你可以做的是让你的路线与/ api位相匹配,然后编写一个onRequestCapture拦截器来抓取URL并对其进行拥有自定义解析。注意,您可能需要删除ColdBox将尝试放入rc的名称/值对。

我会添加一个注意事项 - 这个真正有用的唯一方法是让你提前知道传入变量的顺序,如果你知道,你没有理由不这样做为它创建一个已知的路线。否则你基本上重建了SES拦截器,这是一种称为“内部平台效应”的反模式

http://wiki.coldbox.org/wiki/URLMappings.cfm#URL_Mappings

http://wiki.coldbox.org/wiki/Interceptors.cfm#Core_Interception_Points

http://en.wikipedia.org/wiki/Inner-platform_effect