mcr*_*eau 0 coldfusion coldbox
我正在开发一个冷箱应用程序,我想创建一个接受'n'个路径变量作为一个变量的路由.这就是我的意思.
http://localhost/api/variable1/variable2/variable3/...
Run Code Online (Sandbox Code Playgroud)
我希望能够/api作为一个路径变量获取所有内容,我可以拆分/并获取值或者能够迭代所有变量之后/api.
有没有办法设置路线来做到这一点?
with(pattern="/api", handler="api")
.addRoute(pattern="/:variables", action="index")
.endWith();
Run Code Online (Sandbox Code Playgroud)
任何想法都将非常感激.提前致谢.
您可能知道,默认路由范例是执行名称值对,如下所示:
http://localhost/api/name1/value1/name2/value2/name3/value3
Run Code Online (Sandbox Code Playgroud)
无需为此创建自定义路由,因为路由的匹配部分之后的所有内容都会分解为名称/值对并自动放入rc中.
现在,听起来你只想在你的路线中拥有价值观.如果您知道您将拥有的最大变量数,则可以创建一个可选的,递增命名变量的路径.
addRoute(pattern="/:var1?/:var2?/:var3?/:var4?/:var5?", action="index")
Run Code Online (Sandbox Code Playgroud)
现在,如果你真的可能拥有无限数量的变量,那么就无法做出与之匹配的路线.你可以做的是有你的路线匹配/ 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
| 归档时间: |
|
| 查看次数: |
229 次 |
| 最近记录: |