ColdFusion Lucee 或 Railo RestFull Web 服务映射问题

ColdFusion Lucee Or Railo RestFull Webservice Mapping issue

在 ColdFusion Lucee 上创建我的第一个 RestFul Web 服务。

这些是我遵循的步骤。

  1. 在 ROOT 上创建了名为 "RestAPI"
  2. 的文件夹
  3. 在 RestAPI/API 下创建了子文件夹(对于 CFC)
  4. 已创建 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>
  1. 已创建 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">
  1. 在 lucee 管理服务器中创建了一个映射。 /Example

当我 运行 Call.cfm 我得到这个输出

no rest service for [/RestAPI/call.cfm] found in mapping [/Example]

Please see the attached screen shots

Just want to know why it is not working in root folder

从您的初始屏幕截图中,我发现问题似乎出在您调用 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。