我正在开发一个冷箱应用程序,我想创建一个接受'n'个路径变量作为一个变量的路由。这就是我的意思。
http://localhost/api/variable1/variable2/variable3/...
我希望能够在/api
之后抓取所有内容作为一个路径变量,我可以在/
上拆分并获取值,或者能够在{{1}之后迭代所有变量}。
有没有办法设置路线来执行此操作?
/api
任何想法都会受到最高的赞赏。提前谢谢。
答案 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