2010-03-15 9 views
14

मैं समझता हूं कि सामान्य इकाई इंटरैक्शन करने के लिए आरईएसटी का उपयोग कैसे करें - यूआरएल नामों का उपयोग करके इकाइयों को मैप करने के लिए और उन क्रियाओं पर कार्रवाई के लिए HTTP क्रियाएं। लेकिन आरपीसी की तरह "क्रियाओं" को देखने का आम तौर पर स्वीकार्य तरीका क्या है?आरईएसटी सेवाएं - गैर-डेटा "क्रियाओं" को उजागर करना

उदाहरण के लिए, मान लीजिए कि मैं डिवाइस को रीसेट करने के लिए एक कमांड भेजना चाहता हूं? यहां कोई असली "इकाई" नहीं है या क्या मैं http://mydevice/device/reset?

उत्तर

13

/device/reset या /system/reset ठीक है।

बाकी "डिजाइन पैटर्न" आप किसी भी क्रियाएं का उपयोग नहीं करने के लिए प्रोत्साहित करता है .. आप कर सकता है:

POST http://mydevice/system/state  
<stateType>RESET</stateType> 

संबंधित जानकारी:

+1

हां, यह एक संभावित समाधान है। –

2

पर कुछ ऐसा करता हूं, मैं आमतौर पर इकाई "सिस्टम" या ऐसा कुछ नाम देता हूं। तो आप "/ system/reset" करते हैं। आपने डिवाइस चुना है ताकि यह भी काम करे।

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

+0

मजेदार आपको PUT/POST चीज़ पर कुंजी रखना चाहिए - मैंने अभी भी इसके बारे में पूछा: http://stackoverflow.com/questions/2447677/rest-verbs-which-convention-is-correct/2447714#2447714 – ctacke

+0

मैं उस पर टिप्पणी करूंगा, लेकिन मैं एक आरईएसटी-भिन्नता का भी उपयोग करता हूं क्योंकि सभी क्लाइंट पुट/डिलीट नहीं करते हैं। आरईएसटी के लिए विकिपीडिया पेज पढ़ें: http://en.wikipedia.org/wiki/Representational_State_Transfer – Seaux

+0

हां, मैंने विकिपीडिया लेख पढ़ा है। चूंकि मैं सेवा और ग्राहक दोनों को नियंत्रित कर रहा हूं, इसलिए मुझे सभी 4 क्रियाओं का उपयोग करने की लक्जरी मिल गई है। – ctacke

9

मुझे नहीं लगता कि पोस्ट का उपयोग करने का मामला है। "आरईएसईटी एक्शन" एक बेवकूफ कार्रवाई है (यदि आप इसे बार बार कहते हैं तो आपको हमेशा एक ही परिणाम मिल जाएगा), इसलिए IMHO आपको POUT के बजाय POUT कॉल का उपयोग करना चाहिए (क्योंकि POST idempotent नहीं है)।

इसके अलावा, के रूप में आप एक संसाधन लगा रहे हैं, तो आप

PUT http://system 
<device> 
    <status>RESET</status> 
</device> 

या

PUT http://system/status/reset 

उपयोग कर सकते हैं लेकिन मुझे लगता है 1 एक "अधिक शोकहारा" है, जब से तुम एक संसाधन लगा रहे हैं, जबकि दूसरा onde आप सिर्फ यूआरएल का उपयोग करें।

+0

तो आप कहेंगे कि PUT एक अद्यतन है और पोस्ट एक INSERT है (सूर्य परिभाषा के बजाय आईबीएम)? इसे देखें: http://stackoverflow.com/questions/2447677/rest-verbs-which-convention-is-correct/2447740#2447740 – ctacke

+0

वास्तव में नहीं। यदि आप सीआरयूडी के बारे में सोचते हैं, तो आप इस समानता का उपयोग कर सकते हैं, और यह कहना सही है कि यदि आपके पास INSERT और UPDATE है, तो आपको क्रमशः POST और PUT का उपयोग करना चाहिए। लेकिन बेवकूफी उस से अधिक है। कल्पना करें कि एक संसाधन है जिसे आप केवल अपने डीबी पर एक बार सम्मिलित कर सकते हैं और आपको इसे कभी नहीं बदलना चाहिए। यह एक डालने और एक बेवकूफ कार्रवाई है, इसलिए इस स्थिति में मुझे लगता है कि PUT का उपयोग किया जाएगा। –

+2

PUT http: // सिस्टम/स्थिति/खाली निकाय के साथ रीसेट करें बस संसाधन खाली होने के लिए अद्यतन करता है। पहला सही रीस्टफुल तरीका है। –

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