当前位置:  开发笔记 > 前端 > 正文

Coldfusion:跨ACF11 / Lucee 4.5 RestInitApplication()解决方案

如何解决《Coldfusion:跨ACF11/Lucee4.5RestInitApplication()解决方案》经验,为你挑选了1个好方法。

当我使用以下代码时:


    
        
    
        
    
    
     

Adobe Coldfusion引发以下编译错误:

Parameter validation error for the RESTINITAPPLICATION function.
The function accepts 1 to 3 parameters. 

谁能建议我可以阻止Coldfusion抛出错误的方法?

如果我尝试执行以下操作:


    

    

ACF引发另一种编译错误:

Parameter validation error for the RESTINITAPPLICATION function.
A built-in ColdFusion function cannot accept an assignment statement as a parameter, although it can accept expressions. For example, RESTINITAPPLICATION(d=a*b) is not acceptable. 

如果我尝试:


  
  

  

Lucee引发错误,告诉我密码未定义。

环境:

Windows 10上的ACF11

Windows 2008R2服务器上的Lucee 4.5



1> Charles Robe..:

好。我找到了官方支持的解决方案。如果您查看Adobe Coldfusion官方文档,页面底部的标题为“站点级REST应用程序支持”的段落:

https://helpx.adobe.com/cn/coldfusion/developing-applications/changes-in-coldfusion/restful-web-services-in-coldfusion.html

它指出您可以使用:

this.restsettings

对于几乎所有:

RestInitApplication()

参数。

我尝试了未提及的内容,例如:

dirPath
password

而且有效。

所以这是解决方案:


  
  
  

  
  

更新1

我诚挚地发现,当对REST API CFC进行更改时,需要刷新其余的应用程序。

目的是:

RestInitApplication()

因此,我设计了一种解决此问题的解决方案,实际上简化了例程。似乎RestInitApplication()所需的唯一参数是:

dirPath

根据这些新信息,以下是我的原始答案:


  
    
  
  
  
  

您实际上可以删除第二个参数,并将其替换为:


但是,我将把这个决定留给您!

更新2:

与肖恩·科菲尔德(Sean Corfield)交谈后,他还建议了另一种方法,这确实很聪明。

使用方法:


作为restInitApplication()的每个版本的容器

即使参数计数冲突仍然存在,代码也不会在编译时抛出错误。当放在条件子句中时,cfinclude充当缓冲区。

因此,这是第二种解决方案,我认为这是最干净的解决方案,因为它初始化了REST API的实现方式:


  
  
  
  
  

  
  
  

railo-rest-init-structure.cfm



  
  
  
  

  


coldfusion-rest-init-structure.cfm



  
  

  


现在,我已经对此进行了测试,并且可以正常工作,并且每次单击restInitApplication()时,都会检测到对REST API CFC所做的任何更改。


..为了安全起见,也要对其进行更改;-)
推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有