我正在使用ColdFusion 10的新内置REST API,并且想返回状态代码201(已创建)。我首先尝试了这里描述的RestSetResponse()方法:http://www.adobe.com/devnet/coldfusion/articles/restful-web-services.html。它运行良好,除了它强制你设置函数的返回类型为“void”。 “无效”的问题是,每当我抛出一个异常,它不再返回正确的JSON错误消息。ColdFusion 10 REST API:如何在没有RestSetResponse的情况下设置状态代码()
抛出此异常:
<cfthrow errorcode="400" message="Validation error." />
返回一个很好的格式化JSON当返回类型是“结构”:
HTTP/1.1 400 Bad Request
Content-Type: application/json
{"Message":"Validation error."}
但是,当返回类型为“无效”(这是需要使用RestSetResponse (),反应是一些丑陋的HTML响应
因此,我不得不恢复使用returntype“结构”,放弃RestSetResponse(),并试图这样:
<cfheader statusCode="201" statusText="Created" />
但它不起作用。看来ColdFusion会覆盖statusCode,并且在成功时总是返回200(OK)。任何人都知道如何将状态代码更改为201,而不将函数的返回类型设置为“无效”?
您不能在响应结构中指定自定义内容,如[这里]所述(http://www.adobe.com/devnet/coldfusion/articles/restful-web-services.html#articlecontentAdobe_numberedheader_3)? – imthepitts
我不能那样做。正如我的问题所述,使用RestSetResponse()要求returntype是“void”,如果发生异常,它将不再尊重正确的JSON响应。 –