2013-03-29 21 views
6

RestSetResponse olmadan durum kodu 201 nasıl ayarlanır ColdFusion 10 yeni REST API dahili ve 201 (Oluşturulan) bir durum kodu iade etmek istiyorum. İlk olarak burada açıklanan RestSetResponse() yaklaşımını denedim: http://www.adobe.com/devnet/coldfusion/articles/restful-web-services.html. İyi çalışır, ancak bu işlevin dönüş tipini "boşluğa" getirmeye zorlar. "Void" ile ilgili sorun, bir istisna atarken, uygun JSON hata mesajını döndürmemesidir. returntype olan "yapı" ne zamanColdFusion 10 REST API: Ben kullanıyorum()

<cfthrow errorcode="400" message="Validation error." /> 

bir güzel biçimlendirilmiş JSON İade:

bu istisnayı Fırlatma

HTTP/1.1 400 Bad Request 
Content-Type: application/json 

{"Message":"Validation error."} 

Ama returntype RestSetResponse kullanmak için gerekli olan ("boşluk" olduğunda(), yanıt çirkin bir HTML yanıtıdır.

Bundan dolayı, RestSetResponse() 'den vazgeçilen, returnntype "struct" kullanmaya dönmem gerekiyordu ve bunu denedim:

<cfheader statusCode="201" statusText="Created" /> 

Ama işe yaramıyor. ColdFusion'ın statusCode üzerine yazdığı ve başarılı olduğunda her zaman 200 (OK) döndüğü görülüyor. Herkes, işlevin döndürme türünü "geçersiz" olarak ayarlamadan durum kodunu 201 olarak değiştirmenin bir yolunu biliyor mu?

+0

Eğer yanıt yapı içinde özel içerik belirtilemez (http://www.adobe.com/devnet/coldfusion/articles/restful-web-services.html#articlecontentAdobe_numberedheader_3)? – imthepitts

+0

Bunu yapamam. Sorumluluğumda belirtildiği gibi, RestSetResponse() işlevinin kullanılması, dönen tipin bir istisna durumunda uygun JSON yanıtını artık onaylatan "void" olmasını gerektirir. –

cevap

1

Ben restSetResponse() geçersiz bir returnType gerektiren neden iyi bir neden göremiyorum, ama bu durum böyle değil eğer göz ardı edilir doğruladıktan. Bu biraz çöp.

Durumunuzda çalışırken düşünebildiğim tek şey, içindeki ayrıntıyla birlikte kendi yapınızı yuvarlamaktır, ardından bunu restSetResponse() araması için content değeri olarak kullanın.

Bu

biraz derme-çatma, ancak bu durumda ColdFusion'ın derme-çatma-lik tarafından constrainted ediyoruz galiba. Bununla ilgili olarak logged a bug kullanıyorum. [Burada] açıklandığı gibi

+0

Bundan korkuyordum ama bence haklısın. –

+0

Sadece FYI, ilgileniyorsanız bir blog makalesi için bu konuyu ele aldım: http://adamcameroncoldfusion.blogspot.co.uk/2013/03/restsetresponse-requires-method-to-be.html. –

+0

Detaylı blog yazısı için teşekkürler Adam. Umarım aynı sorunla karşılaşan diğer insanlar için yararlı bir eser olarak hizmet eder. –