2012-05-18 14 views
6

मैं चाहता हूं कि मेरे एपीआई के पास सत्यापन-केवल अनुरोध हो। उदाहरण के लिए, मैं इस तरह के रूप में एक URL है, तो:रीस्टफुल एपीआई: सत्यापन के लिए उपयोग करने के लिए मेथोड/हेडर कॉम्बो केवल

http://api.somesite.com/users/12345 

और उपयोगकर्ता एक ग्राहक के बारे में जानकारी का एक रूप को भरना है कि मैं अंत में पैच/PUT/पोस्ट करेंगे कि संसाधन के लिए। चूंकि उपयोगकर्ता फॉर्म भर रहा है, इसलिए मैं समय-समय पर सर्वर पर अपने आंशिक रूप से पूर्ण अपडेट किए गए प्रतिनिधित्व को भेजना चाहता हूं ताकि मैं उनके इनपुट के रीयलटाइम सत्यापन को प्रदर्शित कर सकूं (उदाहरण के लिए, "वह उपयोगकर्ता नाम पहले ही लिया जा चुका है", "वह पासवर्ड है बहुत छोटा")।

कोई मानक HTTP विधि या हेडर नहीं है जो इस व्यवहार के लिए उसी संसाधन पर अनुमति देता है। ऐसा लगता है मेरी विकल्प हैं:

  1. सत्यापन
  2. उपयोग एक कस्टम हेडर (एक्स somesite-मान्यता-केवल) के लिए एक नया अधीनस्थ संसाधन बनाएँ और यह दर्शाता है कि मैं मान्य करने के लिए चाहते हैं डाल लेकिन नहीं बचा
+0

संबंधित प्रश्न: http : //stackoverflow.com/questions/8368931/how-should-i-design-a-restful-url-to-validate-an-object – suing

+0

ग्रेट सवाल। बस इस मुद्दे में भी भाग गया, और मैं सटीक दो दृष्टिकोणों के बीच बहस कर रहा हूं। व्यक्तिगत रूप से हेडर की ओर झुकाव। इसके कई आदेशों में गिट के '- ड्राय-रन' पैरामीटर से प्रेरित। –

उत्तर

2

कुछ विकल्प

1) का प्रयोग करें कस्टम हेडर
2) उपयोग कर रहा है यह दर्शाता है क्वेरी स्ट्रिंग में कुछ डाल के साथ किया जाता है केवल
मान्य करने के लिए 3) एक्शन यूआरएल उदाहरण का प्रयोग करें \ IndividualClient \ 123 \ actions \ Validate \ Invoke {section 19 यहां http://restfulobjects.files.wordpress.com/2011/11/restful-objects-spec-052.pdf}
4) पदानुक्रमित यूआरएल उदा। \ IndividualClient \ 123 \ मान्यता

इस post मैं इस सलाह मिल से

उपयोग पोस्ट क्या आप जब तक अपने इनपुट है कुछ का मानना ​​है कि आरपीसी की तरह क्या उपयोग गणना जैसी चीजों के लिए प्राप्त करने के लिए, जब भी बड़े, में जो मामला POST

आपके विशिष्ट प्रश्न के संबंध में, POST का उपयोग # 4 और # 5 के लिए किया जाना चाहिए। ये ऑपरेशन उपरोक्त "आरपीसी-जैसे" दिशानिर्देश के तहत गिरते हैं। # 5 के लिए, याद रखें कि पोस्ट को जरूरी नहीं है> सामग्री-प्रकार का उपयोग करें: एप्लिकेशन/एक्स-www-form-urlencoded। यह एक JSON या CSV> पेलोड जितना आसानी से हो सकता है।

यहाँ है कि मैं क्या कर रहा हूँ पर विचार:
उपयोगकर्ता/सत्यापन
पोस्ट
अनुरोध:: UserResource
प्रतिक्रिया:

यह एक संसाधन के ऐड है ValidationResult
रिस्पांस कोड 200, 400. 404।500

यह एक संसाधन के अद्यतन है
उपयोगकर्ता/204/सत्यापन
पोस्ट
अनुरोध: UserResource,
प्रतिक्रिया: ValidationResult रिस्पांस कोड 200, 400. 404. 500

+0

मैं बहुत ही इस के लिए कुछ इसी तरह लागू करने समाप्त हो गया, लेकिन मेरे सॉफ्टवेयर रूटर पुनर्लेखन नहीं के हित में, मैं सिर्फ यह क्वेरी स्ट्रिंग का हिस्सा बनाया: पोस्ट/उपयोगकर्ता/204 को मान्य – Fleep

0

थ्रिड विकल्प क्लाइंट पर सत्यापन फ़ंक्शन को लागू करना होगा। यह फ़ंक्शन विशिष्ट अनुरोध की आवश्यकता होने पर विशिष्ट अनुरोध भेज देगा।

उदाहरण के लिए, आपको वास्तव में यह जांचने की आवश्यकता नहीं है कि कोई पासवर्ड बहुत छोटा है या नहीं। लेकिन आप एक ही अनुरोध भेज सकते हैं कि कोई उपयोगकर्ता नाम मौजूद है या नहीं।

इस तरह सत्यापन अजाक्स, जो btw RESTful API (HTTP) :)

+1

मैं तर्क दूंगा कि AJAX आवश्यक रूप से एक प्रोटोकॉल प्रोटोकॉल के रूप में HTTP का उपयोग करता है, लेकिन एक अर्थपूर्ण तरीके से * एपीआई * के रूप में रीस्टफुल प्रथाओं को लागू करने की आवश्यकता नहीं है *। "सभी HTTP रीस्टफुल" कह रहे हैं, इस बिंदु को याद करते हैं। – Fleep

+0

इसके अलावा, मैं सर्वर-साइड पर वैसे भी मान्य होने जा रहा हूं, और खुद को दोहराने के हित में, मैं अपने सत्यापन कोड को मानकीकृत और एक ही स्थान पर रखने में सक्षम होना पसंद करूंगा। रीयलटाइम सत्यापन जो UI को प्रभावित करता है, जैसे कि पासवर्ड सत्यापन, क्लाइंट-साइड पर पतली, गैर-महत्वपूर्ण सत्यापन के साथ अच्छी तरह से काम करेगा। लेकिन यह ऊपर के बारे में पूछने के लिए एक प्रतिस्थापन नहीं है। – Fleep

+0

यह विकास कार्य की मात्रा दोगुना है (यानी ग्राहक और सर्वर पक्षों पर)। – Pierre

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