我正在使用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響應。 –