2012-06-14 9 views
8

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

[OperationContract] 
[WebInvoke(Method = "POST", UriTemplate = "/Transaction/{**What to write here ????**}", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)] 
public Transaction AddTransaction(Transaction transaction) 
{ 
    return AddTransactionToRepository(transaction); 
} 

[OperationContract] 
[WebInvoke(Method = "PUT", UriTemplate = "/Transaction/{**What to write here ????**}", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)] 
public Transaction UpdateTransaction(Transaction transaction) 
{ 
    return UpdateTransactionInRepository(transaction); 
} 

कृपया विचार है कि मैं uri मानचित्रण के लिए सबसे अच्छा अभ्यास लागू करना चाहते हैं और verbs "" उस में, केवल "संज्ञाओं" नहीं करना चाहती। यह भी बताएं कि ग्राहक अद्वितीय यूआरआई के साथ पोस्ट और पुट के लिए इन तरीकों का उपयोग कैसे करेगा। धन्यवाद

उत्तर

13

आपको Transaction के लिए नीचे यूआरआई को मानचित्र करना होगा।

आईडी से कोई लेन-देन प्राप्त करें - प्राप्त - पोस्ट - - लेन-देन/आईडी

एक नई लेन-देन बनाएं लेनदेन

अद्यतन एक सौदे - PUT - लेन-देन/आईडी

एक सौदे हटाएँ - DELETE - लेन-देन/आईडी

आपका यूआरआई टेम्पलेट्स

[OperationContract] 
[WebInvoke(Method = "POST", UriTemplate = "/Transaction", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)] 
public Transaction AddTransaction(Transaction transaction) 
{ 
    // 
} 

[OperationContract] 
[WebInvoke(Method = "PUT", UriTemplate = "/Transaction/{id}", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)] 
public Transaction UpdateTransaction(int id, Transaction transaction) 
{ 
    // 
} 

नीचे कैसे ग्राहक पोस्ट के लिए इन तरीकों का उपयोग और अद्वितीय यूआरआई

साथ रखो के रूप में परिवर्तित करने की है

आपको पोस्ट और पुट के लिए अद्वितीय यूआरआई की आवश्यकता नहीं है। वहां यूआरआई समान हो सकते हैं।

संदर्भ: http://www.asp.net/web-api/overview/creating-web-apis/creating-a-web-api-that-supports-crud-operations

http://msdn.microsoft.com/en-us/library/bb412172(v=vs.90).aspx

+0

धन्यवाद मार्क स्पष्ट करने के लिए, मैं थोड़ा कैसे ग्राहक अधिक पठनीय तरीके से संवाद होगा के बारे में उलझन में था, लेकिन मैं अनुमान लगा ग्राहक, एक ही यूआरएल लेकिन निर्दिष्ट करने अलग कार्रवाई यानी पद फोन कर दिया, जबकि नष्ट करने के लिए है एपीआई विधि को बुलाओ – MSUH

+0

@MSUH यह सही है – VJAI

+0

@ मार्क, इन दोनों विधियों में एक लेनदेन वस्तु क्यों वापस आती है? मैं समझता हूं कि POST विधि को इसकी आवश्यकता हो सकती है क्योंकि आईडी डेटाबेस पर एक ऑटो जनरेटेड नंबर हो सकता है, लेकिन PUT विधि क्यों? धन्यवाद। – RobJohnson

2

PUT बनाने या एक ज्ञात संसाधन अद्यतन करने, उदाहरण के लिए के लिए है: डाल/लेन-देन/1234

यह (अगर यह पहले से मौजूद है या अद्यतन) बनाना होगा इसका मतलब है आप केवल कर सकते हैं आईडी 1234. साथ लेन-देन जब आप संसाधन के यूआरएल को जानते हैं तो PUT का उपयोग करें।

पोस्ट उदाहरण के लिए, एक नए बच्चे संसाधन बनाता है: पोस्ट/लेन-देन/

यह एक नई लेन-देन संसाधन पैदा करेगा।

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

सी # डेवलपर नहीं है, मुझे नहीं पता कि यह मानचित्र डब्ल्यूसीएफ के लिए कितना आसान है, लेकिन यह दृष्टिकोण प्रौद्योगिकी-स्वतंत्र है।

-1

उचित यूआरएल और एपीआई डिजाइन सिद्धांतों बनाने के लिए ... मैं इस ebook (मेरा नहीं मिला!) एक अवश्य पढ़ें: http://offers.apigee.com/api-design-ebook-rr/

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