2015-03-09 6 views
5

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

प्राप्त http://localhost:8080/my-project/customers/transactions

यह GET अनुरोध सभी ग्राहक लेनदेन देता है।

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

तो, मैं अपने सेवा इंटरफ़ेस createCustomerTransactions में एक और तरीका बनाया है और मैं अपने GET अनुरोध के रूप में ही यह नाम है सोच रहा हूँ, लेकिन यह एक इस तरह पोस्ट हो जाएगा: मैं इस परीक्षण किया का उपयोग कर

पोस्ट http://localhost:8080/my-project/customers/transactions

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

उत्तर

5

शोकहारा जब HTTP के साथ प्रयोग किया जाता है संसाधनों में निर्भर करता है (यूआरएल) और कार्यों HTTP verbs भरोसा करते हैं, यह आम बात है और अच्छा अभ्यास इस क्रिया के लिए प्रयोग किया जाता संसाधनों पर कुछ कार्यों की पहचान के लिए आपके पास:

  • सभी या सिर्फ एक संसाधन प्राप्त करें।
  • POST सामान्य रूप से एक नया संसाधन बनाने के लिए होता है।
  • PUT एक संसाधन
  • DELETE एक संसाधन

    सबसे पहला कार्य है कि हम शुरू होने वाली अपनी RESTful API पहचान है से पहले क्या करना चाहिए में से एक को नष्ट अद्यतन करने के लिए प्रयोग किया जाता है जो संसाधन है कि हमारे पास करने के लिए और क्या हो सकता है की जरूरत है उनके गुण। इस दृष्टिकोण से अधिक पहला नियम .. ऐसे व्यक्ति, टिकट, ग्राहक, आदि के रूप में संज्ञाएं नहीं क्रियाएं, उपयोग करने के लिए है

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

प्राप्त/टिकट - टिकट की एक सूची पुन: प्राप्त करता

प्राप्त/टिकट/12 - एक नया टिकट बनाता

PUT/टिकट/12 - - एक विशिष्ट टिकट

पोस्ट/टिकट पुन: प्राप्त करता अपडेट टिकट # 12

पैच/टिकट/12 - आंशिक रूप से अपडेट टिकट # 12 < - इस दृष्टिकोण की जांच करें।

DELETE/टिकट/12 - हटाता टिकट # 12

ऊपर फ़ायरवॉल विन्यास पर निर्भर करता है, लेकिन आप API डिजाइन सिद्धांतों के लिए एक सुझाव के रूप में ऊपर पर विचार करें।

+0

आपके समय के लिए धन्यवाद, लेकिन क्या आपने जो परिदृश्य बताया है, उसके लिए आप मेरे वास्तविक प्रश्न पर टिप्पणी कर सकते हैं। जीईटी/टिकट और पोस्ट/टिकट के अपने नमूने से, ऐसा लगता है कि मैं सही रास्ते पर हूं। क्या आप सहमत हैं? –

+0

हाँ, आप सही तरीके से हैं – Koitoer

0

हाँ आप कर सकते हैं। वास्तव में यह रीस्टफुल desgin के मूल मूलभूत सिद्धांतों में से एक है। यह क्रूड/आरपीसी की तरह नहीं है जैसे निर्माण या fetchTransaction। संसाधनों पर क्रिया निर्दिष्ट करने के लिए HTTP क्रियाओं का उपयोग किया जाता है।

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