2016-09-15 8 views
14

परिदृश्य: एक मानक रीस्ट एपीआई/जीईटी विधि को .NET कोर नियंत्रक पर कार्यान्वित करना।क्या ओके() विधि new ObjectResult() के बीच कोई अंतर है?

documentation बताता है कि OkObjectResult स्टेटस 200 के साथ ऑब्जेक्ट रेसल्ट है। यह Ok(myResult) नियंत्रकबेस से विरासत में प्राप्त विधि के माध्यम से उपलब्ध है। मुझे लगता है कि यह एक सुविधा विधि है।

हालांकि, tutorial इस दृष्टिकोण का उपयोग नहीं है - यह बजाय रिटर्न new ObjectResult(myResult) जो स्थिति 200

लागू हो जाएगी कि इन दो दृष्टिकोणों के बीच कोई अंतर है?

उत्तर

19

तकनीकी रूप से दो दृष्टिकोणों के बीच कोई अंतर नहीं है।

आप OkObjectResult के कोड को देखने के लिए तो आप उस OkObjectResult एक ObjectResult कि 200 स्थिति कोड है, जो पहले से ही ObjectResult के डिफ़ॉल्ट है सेट देखेंगे चाहते हैं।

मेरे लिए एकमात्र अंतर कोड और आपकी अपनी या आपकी टीम प्राथमिकताओं में पठनीयता है। यह नामकरण के बारे में है और आप किस इरादे को तनाव देना चाहते हैं।

return Ok(myResult);     // gives emphasis on status, my personal favorite 

return new OkObjectResult(myResult); // for me a little bit verbose and the same 
             // effect as Ok; but states we return an Object 

return new ObjectResult(myResult); // gives emphasis of the content that is returned 
+0

प्रत्येक विकल्प के लिए लिंक के साथ-साथ पेशेवरों और विपक्ष के लिए धन्यवाद। – PMBjornerud

+0

आपका स्वागत है। –

+0

कौन एक स्थिर पसंद नहीं है .. – Yiping

2

मैं केवल कहीं कुछ डिफ़ॉल्ट मान पर निर्भर करते हैं और इस मूल्य को स्पष्ट रूप से प्रदान करने में अंतर देख सकते हैं - प्रायः बेहतर है और आपका इरादा भी बहुत कुछ OkObjectResult साथ स्पष्ट है (या StatusCode स्पष्ट रूप से स्थापित करने) है, जो काफी महत्वपूर्ण है। ObjectResult में 200 के डिफ़ॉल्ट StatusCode नहीं हैं - वास्तव में यह डिफ़ॉल्ट रूप से यह मान शून्य है। हालांकि, HttpResponse में डिफ़ॉल्ट स्थिति कोड 200 है, इसलिए यह वैसे भी काम करता है।

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