Я использую новый встроенный REST API ColdFusion 10 и хочу вернуть код состояния 201 (Создано). Сначала я попробовал подход RestSetResponse(), описанный здесь: http://www.adobe.com/devnet/coldfusion/articles/restful-web-services.html. Он работает хорошо, за исключением того, что вынуждает вас установить возвращаемый тип функции на "void". Проблема с «void» заключается в том, что всякий раз, когда я выбрасываю исключение, оно больше не возвращает правильное сообщение об ошибке JSON.
Выбрасывание этого исключения:
<cfthrow errorcode="400" message="Validation error." />
Возвращает красиво отформатированный JSON, когда возвращаемый тип — «struct»:
HTTP/1.1 400 Bad Request
Content-Type: application/json
{"Message":"Validation error."}
Но когда тип возвращаемого значения «недействителен» (что требуется для использования RestSetResponse(), ответ представляет собой какой-то уродливый HTML-ответ.
Из-за этого мне пришлось вернуться к использованию возвращаемого типа "struct", отказаться от RestSetResponse() и попробовать следующее:
<cfheader statusCode="201" statusText="Created" />
Но это не работает. Кажется, что ColdFusion перезаписывает statusCode и всегда возвращает 200 (ОК) в случае успеха. Кто-нибудь знает способ изменить код состояния на 201, не устанавливая возвращаемый тип функции на «void»?