2011-04-28 15 views
7

मैं एक आरईएसटी सेवा तैयार कर रहा हूं और यह देखने के लिए जांच की आवश्यकता है कि कोई पता सही तरीके से दर्ज किया गया है या नहीं। मैं इस बारे में सोच रहा हूं कि एक पूर्ण सड़क पता वैध है या नहीं, यह जांचने के लिए आप एक आरईएसटी इंटरफेस कैसे डिजाइन करेंगे।आरईएसटी सेवा में सच/गलत लौट रहा है?

मेरे पास यह/पता सेवा है और मैं उदाहरण के लिए POST /address/validation कर सकता हूं जो एक एक्सएमएल/जेसन सच या गलत लौटाता है, लेकिन यह मेरे लिए काफी अन-पूर्व-प्रतीत होता है।

एक और तरीका GET /address?street=xxx&nr=xxx&zipcode=xxx (और कुछ और पैरामीटर) करना होगा और यदि सही हो या 2004 सही नहीं है तो सही हो सकता है, जो अधिक सटीक हो सकता है?

मैं विकल्प 1) लेकिन अधिक मैं इसके बारे में सोच रहा हूँ करना शुरू कर दिया

, विकल्प 2) प्राप्त के साथ बेहतर महसूस करता है ...

विचार?

उत्तर

4

एक विश्वसनीय परिप्रेक्ष्य से, आप वास्तव में एक नया संसाधन लौट रहे हैं, इसे पता सत्यापित करें, जिसमें आपका वास्तविक या गलत मूल्य होगा। तो एक दृष्टिकोण /addressvalidation?street=xxx आदि पर एक पोस्ट करना होगा। परिणाम जेएसओएन या स्टेटस कोड के रूप में परिणाम लौटने के साथ मैं ठीक होगा। मुझे यकीन नहीं है कि 404 उपयुक्त है; आप this discussion of validation return status codes पर देखना चाह सकते हैं।

मेरे पास प्रस्तावित होने पर GET /address?street=xxx&nr=xxx&zipcode=xxx दृष्टिकोण के साथ एक ही समस्या है। मेरे लिए, यदि यह 404 लौटाता है, तो इसका मतलब है कि पता सचमुच नहीं मिला है (यानी डेटाबेस में मौजूद नहीं है), बल्कि यह अमान्य है (उदाहरण के लिए ज़िपकोड एक अवैध प्रारूप है; ऐसा कोई पता नहीं हो सकता)। फिर, जुड़ी चर्चा देखें; ऐसा लगता है कि 400 एक और उचित प्रतिक्रिया है।

+0

धन्यवाद जैकब है। हम वास्तव में यहां 2 चीजों का परीक्षण करने जा रहे हैं - दोनों पते सही प्रारूप में हैं, और उसके बाद हम यह देखने के लिए जांच करते हैं कि पता वास्तव में मौजूद है या नहीं। ये हैं, जैसा कि आप कहते हैं, दो अलग-अलग चीजें हैं और अलग-अलग कोड/डेटा वापस करनी चाहिए। –

-2

मुझे पोस्ट करना और स्थिति कोड वापस करना (200 सही है या सही नहीं होने पर 404 नहीं मिला) अधिक आरामदायक है। क्योंकि आप कुछ प्राप्त नहीं कर रहे हैं, यह उचित नहीं दिखता है। आप सर्वर पर कुछ जानकारी पोस्ट कर रहे हैं और यह कुछ प्रसंस्करण (सत्यापन) करता है और कुछ प्रतिक्रिया देता है।

+1

यदि आप मुझसे पूछें तो पोस्ट इसके लिए कोई अच्छा नहीं दिखता है। आरएफसी का कहना है कि "POST विधि का अनुरोध यह है कि मूल सर्वर अनुरोध-संलग्न में अनुरोध-यूआरआई द्वारा पहचाने गए संसाधन के नए अधीनस्थ के रूप में अनुरोध में संलग्न इकाई को स्वीकार करता है" – bluehallu

+0

इस मामले में POST से बेहतर है , क्योंकि ऑपरेशन idempotent –

4

कैसे?

GET /addressValidity?street=xxx&nr=xxx&zipcode=xxx 
=> 
200 OK 
Content-Type: text/plain 

true 
+0

धन्यवाद Darrel, यह आसान है और मुझे यह पसंद है। हालांकि यह स्वीकार करने वाले हेडर्स पर हमेशा एक्सएमएल या जेसन को छेड़छाड़ करने के हमारे सामान्य व्यवहार से बाहर आता है। –

+4

@Johan जाहिर है आप किसी भी मीडिया प्रकार का उपयोग कर सकते हैं। पाठ/सादा सरल स्केलर मानों को वापस करने के लिए बस अच्छा है। यह दुर्भाग्यपूर्ण है कि "एक्सएमएल या जेसन" के लिए वर्तमान जुनून वास्तव में कुछ लाभों से हार जाता है जो आरईएसटी कई अलग-अलग मीडिया-प्रकारों का उपयोग करने की क्षमता के साथ लाता है। –

+0

आप किसी ऑब्जेक्ट को वापस कर सकते हैं, जैसे '{"परिणाम": true} ' –

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