如何创建一个接受查询参数的ColdFusion REST端点

问题描述

这是我尝试使用查询参数创建REST端点的代码段,

<cfcomponent rest="true" restpath="api"> 
   <cffunction name="getUsersQuery" restpath="Users?filter={query}" access="remote" returntype="struct" httpmethod="GET" produces="application/json">
      <cfargument name="query" type="any" required="yes" restargsource="query" />
    
      <cfset var response = {} />
      <cfset response["message"] = "Test" />
      <cfreturn response>
  </cffunction>
</cfcomponent>

但是当我尝试像下面这样调用终点时,它会显示“不允许使用方法

http://localhost:8010/rest/v1/api/Users?filter=userName eq "test"

任何帮助将不胜感激。

解决方法

由于您在参数中提到了?filter={query},因此无需在其余路径中提供restargsource="query"。另外,参数名称也应该是网址键值。

<cffunction name="getUsersQuery" restpath="Users" access="remote" returntype="struct" httpmethod="GET" produces="application/json">
   <cfargument name="filter" type="any" required="yes" restargsource="query" />
    
   <cfset var response = {} />
   <cfset response["message"] = "Test" />
   <cfreturn response>
</cffunction>