ColdFusion Lucee 或 Railo RestFull Web 服务映射问题
ColdFusion Lucee Or Railo RestFull Webservice Mapping issue
在 ColdFusion Lucee 上创建我的第一个 RestFul Web 服务。
这些是我遵循的步骤。
- 在 ROOT 上创建了名为 "RestAPI"
的文件夹
- 在 RestAPI/API 下创建了子文件夹(对于 CFC)
- 已创建 CFC RestAPI/API/Hello.cfc
Hello.cfc
<cfcomponent rest="true" restpath="/hello">
<cffunction name="formPost" access="remote" returnType="String" httpMethod="POST" restPath="/form">
<cfargument name="firstname" type="String" restArgSource="Form">
<cfargument name="lastname" type="String" restArgSource="Form">
<cfset res="firstname : " & #firstname# & " lastname : " & #lastname#>
<cfreturn res>
</cffunction>
</cfcomponent>
- 已创建 CFM Call.cfm
Call.cfm
<cfhttp url="http://mydev:8888/rest/Example/hello/form" method="POST" result="res" port="8888">
<cfhttpparam type="formfield" name="firstname" value="Dan">
<cfhttpparam type="formfield" name="lastname" value="Bin">
- 在 lucee 管理服务器中创建了一个映射。
/Example
当我 运行 Call.cfm 我得到这个输出
no rest service for [/RestAPI/call.cfm] found in mapping [/Example]
从您的初始屏幕截图中,我发现问题似乎出在您调用 call.cfm
模板的方式上。报告的错误消息是:
no rest service for [/RestAPI/call.cfm] found in mapping [/Example]
这告诉我它正在通过您的 REST API 寻找服务,而不是简单地调用模板。我认为这是因为您在 URL 中使用 /rest/
引用了 call.cfm
模板。再次从屏幕截图中,我在浏览器的地址栏中看到了这一点:
mydev:8888/rest/RestAPI/call.cfm
这是我建议将您的 call.cfm
模板移出该子文件夹并移至 Web 根目录的时候。但是,我认为当 call.cfm
文件包含在您的 /RestAPI/
文件夹中时,如果您正确引用它,它也会起作用。您应该能够像这样引用它:
mydev:8888/RestAPI/call.cfm
请注意,我已从浏览器请求的 URL 中删除了 /rest/
引用。不过,您仍然需要 <cfhttp>
调用中的 /rest/
引用。
最后一个问题请在答题框中回答。我可以将多个组件 (cfcs) 文件保存在一个文件夹和地图中吗?
是的,您可以在 API 文件夹中保存多个 CFC。
在 ColdFusion Lucee 上创建我的第一个 RestFul Web 服务。
这些是我遵循的步骤。
- 在 ROOT 上创建了名为 "RestAPI" 的文件夹
- 在 RestAPI/API 下创建了子文件夹(对于 CFC)
- 已创建 CFC RestAPI/API/Hello.cfc
Hello.cfc
<cfcomponent rest="true" restpath="/hello">
<cffunction name="formPost" access="remote" returnType="String" httpMethod="POST" restPath="/form">
<cfargument name="firstname" type="String" restArgSource="Form">
<cfargument name="lastname" type="String" restArgSource="Form">
<cfset res="firstname : " & #firstname# & " lastname : " & #lastname#>
<cfreturn res>
</cffunction>
</cfcomponent>
- 已创建 CFM Call.cfm
Call.cfm
<cfhttp url="http://mydev:8888/rest/Example/hello/form" method="POST" result="res" port="8888">
<cfhttpparam type="formfield" name="firstname" value="Dan">
<cfhttpparam type="formfield" name="lastname" value="Bin">
- 在 lucee 管理服务器中创建了一个映射。
/Example
当我 运行 Call.cfm 我得到这个输出
no rest service for [/RestAPI/call.cfm] found in mapping [/Example]
从您的初始屏幕截图中,我发现问题似乎出在您调用 call.cfm
模板的方式上。报告的错误消息是:
no rest service for [/RestAPI/call.cfm] found in mapping [/Example]
这告诉我它正在通过您的 REST API 寻找服务,而不是简单地调用模板。我认为这是因为您在 URL 中使用 /rest/
引用了 call.cfm
模板。再次从屏幕截图中,我在浏览器的地址栏中看到了这一点:
mydev:8888/rest/RestAPI/call.cfm
这是我建议将您的 call.cfm
模板移出该子文件夹并移至 Web 根目录的时候。但是,我认为当 call.cfm
文件包含在您的 /RestAPI/
文件夹中时,如果您正确引用它,它也会起作用。您应该能够像这样引用它:
mydev:8888/RestAPI/call.cfm
请注意,我已从浏览器请求的 URL 中删除了 /rest/
引用。不过,您仍然需要 <cfhttp>
调用中的 /rest/
引用。
最后一个问题请在答题框中回答。我可以将多个组件 (cfcs) 文件保存在一个文件夹和地图中吗?
是的,您可以在 API 文件夹中保存多个 CFC。