2013-04-09 6 views
5

मैं एक वेब सेवा बना रहा हूं और मेरे पास पथ नामों के बारे में कुछ प्रश्न हैं। आप एक विश्वसनीय webservice में संसाधनों पर कार्रवाइयों को कैसे निर्दिष्ट करते हैं?नामकरण रीस्टफुल पथ

उदाहरण के लिए: एक प्रश्नोत्तरी संसाधन। आपके पास सामान्य सीआरयूडी कार्य है और आप प्रश्नोत्तरी के साथ चीजें भी करना चाहते हैं। जैसे कि एक नया प्रश्नोत्तरी उत्पन्न करना। यह एक कार्रवाई है। क्या आप /quiz/top5 या /quiz?type=top5 जैसे पथ का उपयोग करते हैं या क्या?

मुझे समझ में नहीं आता कि आप एक विश्वसनीय सेवा बनाते समय संसाधनों पर कार्रवाई करने वाले पथ कैसे लिखते हैं।

+0

मैं आईडी '123' –

+0

के लिए'/प्रश्नोत्तरी/जेनरेट/123' का उपयोग करता हूं, मैं '/ quiz/{id}' –

उत्तर

1

लागू करने के लिए मैं apigee से इस ebook की सिफारिश करेंगे: Web API Design: Crafting Interfaces that Developers Love

उनकी सलाह के बाद:

  • व्यावहारिक RESTful डिजाइन में नंबर एक सिद्धांत है: सरल बातें सरल रखने के।
  • अपने मूल यूआरएल को सरल और सहज रखें।
+------------+-------------------+--------------+----------------------------------------+------------------+ 
| Resource | POST create  | GET read  | PUT update        | DELETE delete | 
| /quizzes | Create a new quiz | List quizs | Bulk update quizs      | Delete all quizs | 
| /quizes/12 | Error    | Show Quiz 12 | If exists update Quiz 12, if not Error | Delete Quiz 12 | 
+------------+-------------------+--------------+-----------------------------------------+------------------+ 

शीर्ष सूची आप चाहते हैं, हो सकता है एक समाधान उन वे "पृष्ठांकन और आंशिक प्रतिक्रिया" खंड में रूपरेखा तैयार करने के लिए इसी तरह के बारे में आपकी आवश्यकताओं को हो सकता है:

quizzes/top?limit=5

इसके साथ, आप पहले एक डिफ़ॉल्ट मान (5 या 10 आइटम) के साथ संसाधन quizs/top तैयार कर सकते हैं, और बाद में आइटमों की संख्या को पेजेट/बदलने की क्षमता प्रदान करते हैं।

+0

यदि आप उस ईबुक में दिशानिर्देशों का पालन करना चाहते हैं और 2 बेस यूआरएल हैं। आप एक नया प्रश्नोत्तरी कैसे प्राप्त करेंगे जो सर्वर द्वारा यादृच्छिक रूप से जेनरेट किया गया है? क्या सभी क्विज़ (संग्रह) सूचीबद्ध करने के लिए आरक्षित/क्विज़ आरक्षित है? – LuckyLuke

+0

मैं इसे क्लाइंट साइड पर नहीं बना रहा हूं, मैं बस सर्वर से उत्पन्न जेनरेट चाहता हूं – LuckyLuke

+0

मैं क्विज़/यादृच्छिक (बीटीडब्लू, मैं क्विज़ बहुवचन-क्विज़ लिखने के लिए अपनी पोस्ट संपादित करने जा रहा हूं- ठीक से :-) – jalopaba

0

वास्तव में आप पर निर्भर करता है - विश्वसनीय पैटर्न नामकरण सम्मेलनों को निर्देशित नहीं करते हैं।

What are the best/common RESTful url verbs and actions? इससे आपकी मदद हो सकती है?

बस मार्गों को समझदार बनाएं: उदा। प्रश्नोत्तरी/शो/{आईडी}, प्रश्नोत्तरी/शीर्ष/{संख्या} आदि ...

संपादित करें: रेल कन्वेंशन से लिया गया रूट एक्शन नामकरण के आसपास टिप्पणी का उत्तर जोड़ें। http://guides.rubyonrails.org/routing.html#crud-verbs-and-actions

+0

का उपयोग करूँगा तो आप संसाधनों पर "प्रक्रिया" को ट्रिगर करने वाले पथ कैसे लिखते हैं? मेरा मतलब है कि सीआरयूडी पथ न केवल एक कार्रवाई की तरह? – LuckyLuke

+0

संपादित करें abouve ... – diagonalbatman

+0

दूसरे उत्तर में वह कहता है कि आपको ऑब्जेक्ट निर्दिष्ट करने के लिए URL का उपयोग करना चाहिए, न कि क्रियाएं। एचएम ... तो "शीर्ष" निर्दिष्ट वस्तुओं का उपयोग करने का आपका उदाहरण? – LuckyLuke

1

यह वही है जो आप पसंद करते हैं। मैं व्यक्तिगत रूप से जिस तरह से जैसे last.fm एपीआई काम करता है:

http://www.last.fm/api/intro

लेकिन अगर आपके कुछ अच्छा मानकों की तलाश में, इस पोस्ट ही देख:

What are the best/common RESTful url verbs and actions?

How to create REST URLs without verbs?

0

मैं एक ही प्रश्न के लिए इस उत्तर https://stackoverflow.com/a/11170376/300886 पढ़ने की सलाह देते हैं।

सामान्य रूप से, आपको यह समझना चाहिए कि आपके एपीआई के कौन से हिस्से जीईटी के माध्यम से उपलब्ध होना चाहिए, और जो POST के माध्यम से उपलब्ध होना चाहिए। जीईटी के माध्यम से उपलब्ध संसाधनों को सामान्य रूप से संज्ञाओं का उपयोग करके वर्णित किया जाना चाहिए, क्रियाएं (जैसे कि प्रश्नोत्तरी का उत्तर पोस्ट करना) को क्रिया के प्रयोग से वर्णित POST (या DELETE, शायद) के माध्यम से उपलब्ध होना चाहिए, शायद संज्ञा के बाद - संसाधन का नाम कार्रवाई की जाती है।

0

आलेख में समझाए गए REST URL के लिए निर्देशिका जैसे संरचना का उपयोग करना बेहतर है।

एक URL /{type}/{operation}/{param1}/{param2}... तरह

अधिक सहज और maitainable (परम क्लासिक ?= के रूप में पारित किया जा सकता है कि वे भी कई हैं)

तो अपने मामले में यह /quiz/top/5 हो सकता है या कल अगर यह होना चाहिए लग रहा है शीर्ष 100, तो एक ही रूप में /quiz/top/100

0

यूआरएल अपने वस्तुओं की पहचान पुन: उपयोग किया जा सकता है। HTTP विधियां ऑब्जेक्ट पर सर्वर को निष्पादित करने के लिए कार्रवाई (या ऑपरेशन) निर्दिष्ट करें।

उदाहरण के लिए:

/quiz/top5 
  • HTTP GET: प्रश्नोत्तरी top5 देखने के लिए क्लाइंट के अनुरोध, इस एक नया बना मतलब है? या इसका मतलब एक मौजूदा प्रदर्शित करता है? यह आप पर निर्भर है (जीईटी के लिए सम्मेलन सर्वर पर राज्य को बदलने के बिना वस्तुओं का अनुरोध करना है)।
  • HTTP POST: ग्राहक अनुरोधों परिवर्तन
+0

शीर्ष 5 भाग गतिशील रूप से शीर्ष 5 वस्तुओं की सूची को संसाधित करने का मतलब होगा। तो यह वस्तुओं की पहचान की छाता फिट बैठता है? कार्रवाई नहीं है? – LuckyLuke

+0

यह बिल्कुल सही है। – Ulises

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