0

我一直在使用 ColdFusion 11 的 REST API 支持,我想知道是否有可能让它支持在 URI中间而不是仅在末尾带有动态令牌的 URI。也就是说,它很容易支持 URI,例如:

/rest/users/12345

其中12345是动态的(在这种情况下是用户的userID)。但是我还没有找到一种方法(没有大量的 URI 黑客攻击)来支持 URI,例如:

/rest/users/12345/emailAddresses

那么,是否可以在 ColdFusion(11 或 2016)中做到这一点?如果没有,Taffy 是否支持它(我没有看到它在哪里,但我可能是错的)?

TIA

4

1 回答 1

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”。

我希望这有帮助。

于 2017-06-06T16:30:29.420 回答