我一直在使用ColdFusion 11的REST API支持,我想知道是否可以让它支持带有动态令牌的URI 的URI而不是仅在最后。也就是说,它非常容易支持如下的URI:
/rest/users/12345
12345
是动态的(在这种情况下,用户是userID
)。但我还没有找到一种方法(没有大量的URI黑客攻击)来支持以下URI:
/rest/users/12345/emailAddresses
那么,是否可以在ColdFusion(11或2016)中执行此操作?如果没有,Taffy是否支持(我没有看到它在哪里,但我可能错了)?
TIA
答案 0 :(得分:1)
已经有一段时间了,我想提供答案,以防其他人有同样的问题......
ColdFusion在为REST端点定义CFC时,允许您在restpath
属性中为<cfcomponent>
和<cffunction>
标记指定通配符/变量名称。然后,您可以为这些变量中的每一个定义<cfargument>
个标记,以便您可以在函数中访问它们。例如:
<cfcomponent rest="true" restpath="/users/{userId}/pets" ... >
<cffunction name="getPets" access="remote" httpMethod="GET">
<cfargument name="userId" type="numeric" required="true" restargsource="Path" />
<!--- Called with a path like /users/123/pets/ --->
<!--- do stuff using the arguments.userId (123) variables --->
</cffunction>
<cffunction name="getPet" access="remote" httpMethod="GET" restpath="{petId}">
<cfargument name="userId" type="numeric" required="true" restargsource="Path" />
<cfargument name="petId" type="numeric" required="true" restargsource="Path" />
<!--- Called with a path like /users/123/pets/456/ --->
<!--- do stuff using the arguments.userId (123) and/or arguments.petId (456) variables --->
</cffunction>
</cfcomponent>
这里的键是使用restpath
属性,将变量定义为花括号中的变量名,然后将这些变量定义为函数的参数,并将restargsource
属性设置为“Path”。
我希望这会有所帮助。