Używam nowego wbudowanego interfejsu REST API ColdFusion 10 i chciałbym zwrócić kod statusu 201 (utworzony). Najpierw wypróbowałem metodę RestSetResponse() opisaną tutaj: http://www.adobe.com/devnet/coldfusion/articles/restful-web-services.html. Działa dobrze, z wyjątkiem tego, że zmusza do ustawienia returntype funkcji na "void". Problem z "void" polega na tym, że ilekroć wyrzucam wyjątek, nie zwraca on już poprawnego komunikatu o błędzie JSON.ColdFusion 10 REST API: jak ustawić kod statusu 201 bez RestSetResponse()
rzucanie ten wyjątek:
<cfthrow errorcode="400" message="Validation error." />
Zwraca ładnie sformatowany JSON gdy returntype jest "struktura":
HTTP/1.1 400 Bad Request
Content-Type: application/json
{"Message":"Validation error."}
ale gdy returntype jest "void" (co jest wymagane do korzystania RestSetResponse(), odpowiedzią jest jakaś brzydka odpowiedź HTML:
Z tego powodu musiałem powrócić do użycia returntype "struct", zrezygnowałem z RestSetResponse() i wypróbowałem to:
<cfheader statusCode="201" statusText="Created" />
Ale to nie działa. Wygląda na to, że ColdFusion nadpisuje kod statusu i zawsze zwraca 200 (OK), kiedy się powiedzie. Ktoś wie, w jaki sposób zmienić kod statusu na 201, bez ustawiania returntype funkcji na "void"?
Nie możesz określić niestandardowej zawartości w strukturze odpowiedzi, jak opisano [tutaj] (http://www.adobe.com/devnet/coldfusion/articles/restful-web-services.html#articlecontentAdobe_numberedheader_3)? – imthepitts
Nie mogę tego zrobić. Jak wspomniano w moim pytaniu, użycie RestSetResponse() wymaga, aby returntype było "void", które nie honoruje właściwej odpowiedzi JSON w przypadku wyjątku. –