2013-03-29 3 views
6

मैं कोल्डफ्यूजन 10 के नए अंतर्निहित आरईएसटी एपीआई का उपयोग कर रहा हूं और मैं 201 (निर्मित) का स्टेटस कोड वापस करना चाहता हूं। मैंने पहले RestSetResponse() दृष्टिकोण का प्रयास किया जो यहां वर्णित है: http://www.adobe.com/devnet/coldfusion/articles/restful-web-services.html। यह अच्छी तरह से काम करता है, सिवाय इसके कि यह आपको फ़ंक्शन की वापसी प्रकार को "शून्य" पर सेट करने के लिए मजबूर करता है। "शून्य" के साथ समस्या यह है कि जब भी मैं अपवाद फेंकता हूं, तो यह उचित JSON त्रुटि संदेश नहीं लौटाता है।कोल्डफ्यूजन 10 आरईएसटी एपीआई: RestSetResponse के बिना स्टेटस कोड 201 कैसे सेट करें()

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

एक ठीक से स्वरूपित JSON देता है जब returntype है "struct":

इस अपवाद फेंकने

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

{"Message":"Validation error."} 

लेकिन जब returntype "शून्य" (RestSetResponse उपयोग करने के लिए आवश्यक है जो है(), प्रतिक्रिया कुछ बदसूरत एचटीएमएल प्रतिक्रिया है।

इस वजह से, मुझे रीस्टस्टेट "स्ट्रक्चर" का उपयोग करने के लिए वापस जाना पड़ा, RestSetResponse() पर छोड़ दिया गया, और यह कोशिश की:

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

लेकिन यह काम नहीं करता है। ऐसा लगता है कि कोल्डफ्यूजन स्थिति कोड को ओवरराइट करता है और यह सफल होने पर हमेशा 200 (ठीक) देता है। किसी को भी "शून्य" पर फ़ंक्शन की वापसी प्रकार सेट किए बिना स्टेटस कोड को 201 में बदलने का तरीका पता है?

+0

आप के रूप में [यहां] वर्णित प्रतिक्रिया struct में कस्टम सामग्री निर्दिष्ट नहीं कर सकते (http://www.adobe.com/devnet/coldfusion/articles/restful-web-services.html#articlecontentAdobe_numberedheader_3)? – imthepitts

+0

मैं ऐसा नहीं कर सकता। के रूप में मेरे सवाल में उल्लेख किया है, RestSetResponse() का उपयोग कर कि returntype "शून्य" है, जो अब एक अपवाद के मामले में उचित JSON उत्तर का सम्मान करता है की आवश्यकता है। –

उत्तर

1

मुझे कोई अच्छा कारण नहीं दिख रहा है कि restSetResponse() को शून्य की वापसी की आवश्यकता क्यों होनी चाहिए, लेकिन सत्यापित है कि अगर यह मामला नहीं है तो इसे अनदेखा किया जाता है। जो थोड़ा बकवास है।

आपकी स्थिति के आसपास काम करने के तरीके से मैं केवल एक चीज सोच सकता हूं, इसमें त्रुटि विवरण के साथ अपनी खुद की संरचना रोल करना है, फिर contentrestSetResponse() कॉल के लिए मान सेट के रूप में उपयोग करें।

इसमें कुछ समय जेरी से बनाया है, लेकिन आप इस उदाहरण में ColdFusion की जेरी निर्मित सत्ता से constrainted कर रहे हैं, मुझे लगता है।

मेरे पास logged a bug इससे संबंधित है।

+0

मुझे इससे डर था, लेकिन मुझे लगता है कि आप सही हैं। –

+0

बस FYI करें, मैं इस मुद्दे को प्रेरणा के रूप में एक ब्लॉग लेख के लिए ले लिया है, अगर आप रुचि रखते हैं: http://adamcameroncoldfusion.blogspot.co.uk/2013/03/restsetresponse-requires-method-to-be.html। विस्तृत ब्लॉग पोस्ट के लिए –

+0

धन्यवाद एडम। मुझे उम्मीद है कि यह उन लोगों के लिए उपयोगी आर्टिफैक्ट के रूप में कार्य करता है जो इस समस्या का सामना करते हैं। –

संबंधित मुद्दे