【问题标题】:Best way for implementing webservice in CF在 CF 中实现 web 服务的最佳方式
【发布时间】:2017-05-11 07:17:05
【问题描述】:

我必须在 ColdFusion 中创建一个 Web 服务。我尝试了以下两种方法。谁能帮我找到最好的方法(性能和安全增强基础)

第一道

创建了一个如下所示的 cfm 页面;

    <cfset result               = StructNew() />
    <cfset resultStruct         = StructNew() />
    <cfset validStruct          = StructNew() />
    <cfset VARIABLES.Sample     = CreateObject("component","main.webservice.Sample")>

    <cfif NOT isDefined("URL.method")>
      <cfset result['status'] = false >
      <cfset result['message'] = 'method is missing' />
      <cfoutput>#SerializeJSON(result)#</cfoutput>
      <cfabort>
    </cfif>

    <cfswitch expression="#URL.method#">
      <cfcase value="get">
        <cfset fieldList = "name">
        <cfset validStruct = validate(fieldList) />
        <cfif validStruct['status']>
           <cfset resultStruct = VARIABLES.Sample.get(argumentCollection=URL) />
        </cfif>
        <cfoutput>#SerializeJSON(resultStruct)#</cfoutput>
        <cfbreak>
      </cfcase>

      <cfcase value="put">
        <cfset fieldList = "name,value">
        <cfset validStruct = validate(fieldList) />
        <cfif validStruct['status']>
          <cfset resultStruct = VARIABLES.Sample.put(argumentCollection=URL) />
        </cfif>
        <cfoutput>#SerializeJSON(resultStruct)#</cfoutput>
        <cfbreak>
     </cfcase>

     <cfdefaultcase>
        <cfset result['status'] = false >
        <cfset result['message'] = 'Not a valid method' />
        <cfoutput>#SerializeJSON(result)#</cfoutput>
        <cfbreak> 
     </cfdefaultcase>
   </cfswitch>

并在 webservice 文件夹下创建了一个名为“Sample”的 cfc,并像上面一样调用。

网络服务网址

http://test.com/webservice/Sample.cfm?method=get&name=test

第二种方式

直接从 CFC 示例调用

Sample.CFC

<cfcomponent displayname="Sample" hint="Sample WebService" output="false">

  <cffunction name="get" access="remote" returntype="struct" returnformat="json">
     <cfargument name="name" required="true" type="string" >

     <cfreturn StructNew() />        
  </cffunction>

  <cffunction name="put" access="remote" returntype="struct" returnformat="json">
     <cfargument name="name" required="true" type="string" >
     <cfargument name="value" required="true" type="string" >

     <cfreturn StructNew() />        
  </cffunction>

</cfcomponent>

网络服务网址

http://test.com/webservice/Sample.CFC?method=get&name=test

【问题讨论】:

  • 也许改用现有的框架会更好。你看过太妃糖吗? docs.taffy.io

标签: web-services coldfusion cfml cfc


【解决方案1】:

第二种方法是在 CFML 中执行 WebServices 的标准方法。除了功能之外,您还寻求获得基于标准的 WSDL 返回和定义。这是一个重建轮子的案例。我确信可以优化 ws 的底层 CF 代码,但它已经非常好,并且已经过数百万人的现场测试。

【讨论】:

    【解决方案2】:

    我建议在 ColdFusion 中设置 RESTful Web 服务。这是一个excellent article,可以帮助您入门。

    还有Taffy,号称更简单,虽然我没用过。

    【讨论】:

      猜你喜欢
      • 2011-01-15
      • 1970-01-01
      • 2015-11-28
      • 1970-01-01
      • 1970-01-01
      • 2011-10-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多