coldfusion10restapi:如何让cfthrow返回带有驼峰大小写属性的JSON

coldfusion10restapi:如何让cfthrow返回带有驼峰大小写属性的JSON,api,rest,exception,coldfusion,coldfusion-10,Api,Rest,Exception,Coldfusion,Coldfusion 10,我正在使用ColdFusion 10的新RESTAPI。假设我抛出此异常: <cfthrow errorcode="400" message="Validation error." type="ValidationException" /> 请注意,属性“Message”和“Type”是以Pascal大小写第一个字母生成的。为了使其与API中的所有其他内容保持一致,我需要将属性设置为大小写首字母,例如: {"message":"Validation error.","type":"

我正在使用ColdFusion 10的新RESTAPI。假设我抛出此异常:

<cfthrow errorcode="400" message="Validation error." type="ValidationException" />
请注意,属性“Message”和“Type”是以Pascal大小写第一个字母生成的。为了使其与API中的所有其他内容保持一致,我需要将属性设置为大小写首字母,例如:

{"message":"Validation error.","type":"ValidationException"}
你知道我该怎么做吗?我正在寻找一种方法来调整ColdFusion生成JSON的方式,而无需手动执行cfcatch并自己生成JSON。

单击它并返回您自己的自定义JSON字符串,该字符串由异常的消息和详细信息构造而成

我不认为你可以调整它,除非你有来自Adobe的源代码

并返回您自己的自定义JSON字符串,该字符串由异常的消息和详细信息构造而成


我不认为你可以调整它,除非你有来自Adobe的源代码

如果您将IIS与ColdFusion一起使用,这里有一种解决此问题的方法,而不必在每个API端点上使用和滚动您自己的响应,这是一种真正的痛苦

我在.NET中编写了一个HttpModule,它利用IIS的响应管道修改ColdFusion返回的响应。只有当响应内容类型为application/json且状态代码不是以2开头时,它才会发生干扰,即,这不是一个成功的响应。所有代码都可在此处获得:

下面是如何使用HttpModule

1获取DLL

从此处获取ColdFusion.RestPostProcess.dll文件,并将其放入ColdFusion应用程序的bin文件夹:

例如,如果您的ColdFusion应用程序位于此处:

C:/myapp
然后您要将dll放在此处:

C:/myapp/bin/ColdFusion.RestPostProcess.dll
如果您不想信任陌生人的DLL,则需要查看源代码并自己在Visual Studio中编译项目以生成DLL

2修改web.config

在应用程序的根目录中修改或创建web.config文件。内容应该是这样的:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.web>
        <httpModules>
            <!-- This is for IIS5, IIS6, and IIS7 Classic -->
            <add name="JsonCamelCasePropertyConverterModule" type="ColdFusion.RestPostProcess.JsonCamelCasePropertyConverterModule"/>
        </httpModules>
    </system.web>
    <system.webServer>
        <modules>
            <!-- This is for IIS7+ Integrated mode -->
            <add name="JsonCamelCasePropertyConverterModule" type="ColdFusion.RestPostProcess.JsonCamelCasePropertyConverterModule"/>
        </modules>
    </system.webServer>
</configuration>
{"message":"Email is invalid.","type":"ValidationException"}
如果您想知道我是如何创建这个HttpModule的,可以在这里找到源代码:

在这里:


如果您将IIS与ColdFusion一起使用,这里有一种解决此问题的方法,而不必在每个API端点上使用和滚动您自己的响应,这是一种真正的痛苦

我在.NET中编写了一个HttpModule,它利用IIS的响应管道修改ColdFusion返回的响应。只有当响应内容类型为application/json且状态代码不是以2开头时,它才会发生干扰,即,这不是一个成功的响应。所有代码都可在此处获得:

下面是如何使用HttpModule

1获取DLL

从此处获取ColdFusion.RestPostProcess.dll文件,并将其放入ColdFusion应用程序的bin文件夹:

例如,如果您的ColdFusion应用程序位于此处:

C:/myapp
然后您要将dll放在此处:

C:/myapp/bin/ColdFusion.RestPostProcess.dll
如果您不想信任陌生人的DLL,则需要查看源代码并自己在Visual Studio中编译项目以生成DLL

2修改web.config

在应用程序的根目录中修改或创建web.config文件。内容应该是这样的:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.web>
        <httpModules>
            <!-- This is for IIS5, IIS6, and IIS7 Classic -->
            <add name="JsonCamelCasePropertyConverterModule" type="ColdFusion.RestPostProcess.JsonCamelCasePropertyConverterModule"/>
        </httpModules>
    </system.web>
    <system.webServer>
        <modules>
            <!-- This is for IIS7+ Integrated mode -->
            <add name="JsonCamelCasePropertyConverterModule" type="ColdFusion.RestPostProcess.JsonCamelCasePropertyConverterModule"/>
        </modules>
    </system.webServer>
</configuration>
{"message":"Email is invalid.","type":"ValidationException"}
如果您想知道我是如何创建这个HttpModule的,可以在这里找到源代码:

在这里:


这就是我害怕的。我越熟悉CF10的RESTAPI,就越会覆盖内置功能。我没有在CF10中使用REST,我们仍然在使用CF9,但最近我听到很多抱怨。也许是时候直接去斯卡拉了。这就是我害怕的。我越熟悉CF10的RESTAPI,就越会覆盖内置功能。我没有在CF10中使用REST,我们仍然在使用CF9,但最近我听到很多抱怨。也许是时候直接去斯卡拉剧院了。同上。。还有很好的指示+1迪托。。还有很好的指示+1.