2010-05-01 18 views
6

REST के विचारों को मेरी केवल वास्तविक जोखिम रेल 'RESTful routing पर रूबी के माध्यम से किया गया है। इसने मुझे रेल के साथ बनाए गए सीआरयूडी-आधारित अनुप्रयोगों के लिए उपयुक्त बनाया है, लेकिन इसके परिणामस्वरूप पुनरुत्थान की मेरी समझ कुछ हद तक सीमित है।समझना बाकी


मान लीजिए कि हम आइटम के एक परिमित संग्रह, जिनमें से प्रत्येक की अनन्य आईडी है, और इस तरह रंग, आकार, और आकार के रूप में गुण, के एक नंबर (जो कुछ आइटम के लिए अपरिभाषित जा सकता है) करते हैं।

आइटम समय की अवधि के लिए एक ग्राहक द्वारा इस्तेमाल किया जा सकता है, लेकिन प्रत्येक आइटम केवल एक बार में एक ग्राहक द्वारा इस्तेमाल किया जा सकता। वस्तुओं तक पहुंच सर्वर द्वारा विनियमित है। ग्राहक सर्वर से कुछ वस्तुओं के अस्थायी उपयोग का अनुरोध कर सकते हैं।

आमतौर पर, ग्राहकों को केवल विशेष गुण, न कि विशिष्ट आइटम के लिए उपयोग हो रही है की तुलना में के साथ आइटम के एक नंबर के लिए उपयोग हो रही में रुचि होगी।

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

एक ग्राहक अनुरोध में निम्न प्रकार के कर सकते हैं:

  • मुझे बताओ कि कितने हरी त्रिकोण आइटम देखते हैं (कुल/उपलब्ध में)।
  • मुझे 200 बड़े लाल आइटम का उपयोग करें।
  • मैं आइटम 21, 23 के साथ समाप्त कर दिया है, 23
  • 100 नई लाल चौक आइटम जोड़ें।
  • 50 छोटे हरे रंग के आइटम हटाएं।
  • नीले होने के लिए सभी बड़े पीले रंग के पेंटगोन आइटम संशोधित करें।

खिलौना ऊपर के उदाहरण एक संसाधनों के आवंटन समस्या मैं हाल ही में से निपटने के लिए पड़ा है की तरह है। मुझे इसके बारे में सोचने के बारे में कैसे जाना चाहिए?

उत्तर

5

तो संसाधनों का ताला सही मायने में अपने परिदृश्य में एक डोमेन चिंता का विषय है तो मैं संसाधन के रूप में ताला मॉडलिंग की सिफारिश करेंगे।

यहां कुछ सुझाव दिए गए हैं कि आप सुझाए गए अनुरोधों को कैसे कर सकते हैं।

GET /Triangle/Green/Count 
GET /Triangle/Green/Available 

POST /Item/Red/Large/Locks?quantity=200 

DELETE /Item/21/Lock 
DELETE /Item/23/Lock 
DELETE /Item/25/Lock 

POST /Square/Red?quantity=100 

DELETE /Item/Green/Small?quantity=100 

POST /Pentagon/Blue?url=/Pentagon/Yellow 

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

+0

+1 अच्छा विचार, संसाधनों के रूप में ताले - नरों के संदर्भ में सोचें, क्रियाएं नहीं (लॉक घटना बनाम लॉक)। – ScottCher

6

समझने की चाल है क्रियाओं के बजाय संज्ञाओं पर ध्यान केंद्रित करने की समस्याओं के बारे में सोचना।

बाकी दुनिया में, क्रियाएं सभी "पूर्व निर्धारित" कर रहे हैं और संज्ञाओं असीम लचीला हो जाते हैं। एक साबुन या रॉक दुनिया में, क्रियाएं असीम रूप से लचीली होती हैं। क्रियाओं को लॉक करने के लिए अपनी सोच को प्रतिबंधित करें और फिर देखें कि आपके पास अपनी बाधाओं के भीतर आपकी समस्या को हल करने के लिए कौन से संज्ञाएं हैं।

यह वही है जो उपरोक्त उत्तर में किया गया था - उसने एक ताला के लिए एक नया संज्ञा बनाया जो आपकी बाधाओं को पूरा करेगा और फिर आप जो चाहते थे उसे प्राप्त करने के लिए उन्हें एक्सेस कर सकते थे।

आपके कुछ प्रश्न खोज या फ़िल्टर से संबंधित थे - उन लोगों के लिए जो संसाधनों के प्रकारों के खिलाफ जीते हैं, परिणामों को सीमित या फ़िल्टर करने के लिए क्वेरी पैरामीटर में गुजरते हैं।

0

बुनियादी शिक्षाओं के लिए इसे पढ़ें ... मुझे आरईएसटी में फंसने के लिए ... !!!

एक सामग्री प्रबंधन प्रणाली में लेखों का एक सेट हो सकता है। यहां पर दो संसाधन हैं। सबसे पहले, व्यक्तिगत लेख हैं। प्रत्येक संसाधन का गठन करता है। एक दूसरा संसाधन भी है: लेखों का संग्रह।

सभी लेखों की एक सूची लाने के लिए, हम इस संग्रह के खिलाफ HTTP GET अनुरोध जारी कर सकते हैं, पथ/लेखों पर कहें। किसी व्यक्तिगत संसाधन की सामग्री लाने के लिए, हमें इसकी पहचान करनी होगी। रेल मार्ग अपना प्राथमिक कुंजी मूल्य (यानी, इसकी आईडी) देना होगा। फिर हम यूआरएल/लेख/1 के खिलाफ, इस बार एक जीईटी अनुरोध जारी करेंगे। अब तक, यह सब काफी परिचित लग रहा है। लेकिन क्या होता है जब हम अपने संग्रह में एक लेख जोड़ना चाहते हैं?

गैर-भरोसेमंद अनुप्रयोगों में, हम संभवतः एक क्रिया वाक्यांश के साथ कुछ क्रियाओं का आविष्कार करेंगे: articles/add_article/1। आरईएसटी की दुनिया में, हम ऐसा करने के लिए तैयार नहीं हैं: हमें संसाधनों को बताना है कि क्रियाओं के मानक सेट का उपयोग करके क्या करना है। आरईएसटी का उपयोग करके हमारे संग्रह में एक नया आलेख बनाने के लिए, हम लेख लिखने वाले पोस्ट डेटा के साथ/लेख पथ पर निर्देशित एक HTTP POST अनुरोध का उपयोग करेंगे। हां, यह वही पथ है जिसका उपयोग हम लेखों की एक सूची प्राप्त करने के लिए करते थे: यदि आप इसे प्राप्त करते हैं, तो यह एक सूची के साथ प्रतिक्रिया देता है, और यदि आप इसे पोस्ट करते हैं, तो यह संग्रह में एक नया लेख जोड़ता है।

इसे एक कदम आगे ले जाएं। हमने पहले ही देखा है कि आप किसी लेख की सामग्री को पुनर्प्राप्त कर सकते हैं, पथ/आलेख/1 के विरुद्ध एक GET अनुरोध जारी कर सकते हैं। उस आलेख को अपडेट करने के लिए, आप एक ही यूआरएल के खिलाफ एक HTTP पुट अनुरोध जारी करेंगे। और, इसे हटाने के लिए, आप एक ही यूआरएल का उपयोग कर फिर से एक HTTP डिलीट अनुरोध जारी कर सकते हैं।

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