Tôi đang sử dụng API REST tích hợp mới của ColdFusion 10 và tôi muốn trả về mã trạng thái 201 (Đã tạo). Lần đầu tiên tôi thử phương thức RestSetResponse() được mô tả ở đây: http://www.adobe.com/devnet/coldfusion/articles/restful-web-services.html. Nó hoạt động tốt, ngoại trừ việc nó buộc bạn thiết lập returntype của hàm thành "void". Vấn đề với "void" là bất cứ khi nào tôi ném một ngoại lệ, nó không còn trả về thông báo lỗi JSON thích hợp nữa.API REST ColdFusion 10: Cách đặt mã trạng thái 201 mà không có RestSetResponse()
Ném ngoại lệ này:
<cfthrow errorcode="400" message="Validation error." />
Trả về một JSON định dạng đẹp khi returntype là "struct":
HTTP/1.1 400 Bad Request
Content-Type: application/json
{"Message":"Validation error."}
Nhưng khi returntype là "khoảng trống" (đó là cần thiết để sử dụng RestSetResponse(), phản hồi là một số phản hồi HTML xấu xí
Vì điều này, tôi phải hoàn nguyên bằng cách sử dụng lại "struct", đã từ bỏ RestSetResponse() và đã thử điều này:
<cfheader statusCode="201" statusText="Created" />
Nhưng nó không hoạt động. Có vẻ như ColdFusion ghi đè mã trạng thái và luôn trả về 200 (OK) khi thành công. Bất cứ ai biết một cách để thay đổi mã trạng thái thành 201 mà không cần thiết lập lại chức năng của hàm để "void"?
Bạn không thể chỉ định nội dung tùy chỉnh trong cấu trúc phản hồi như được mô tả [ở đây] (http://www.adobe.com/devnet/coldfusion/articles/restful-web-services.html#articlecontentAdobe_numberedheader_3)? – imthepitts
Tôi không thể làm điều đó. Như đã đề cập trong câu hỏi của tôi, sử dụng RestSetResponse() yêu cầu rằng returntype là "void", mà không còn tôn trọng phản ứng JSON thích hợp trong trường hợp ngoại lệ. –