.NET में "HttpRequest.RequestType" और "WebRequest.Method" मान के लिए स्थिरांक कहाँ है?


92

मुझे ASP.NET (या ) में ए RequestTypeकी जाँच करने की आवश्यकता है । मुझे पता है कि मैं अनुरोध प्रकार के लिए स्ट्रिंग मान " " या " " का उपयोग कर सकता हूं, लेकिन मैं शपथ ले सकता था कि .NET में कुछ वर्ग में एक निरंतर कहीं था जिसमें मान शामिल थे।HttpRequestWebRequest.MethodPOSTGET

जिज्ञासा से बाहर मैं सोच रहा था कि अगर किसी को पता था कि इन स्ट्रिंग स्थिरांक किस वर्ग के लिए हैं GETऔर POSTमैंने ऑनलाइन खोज करने की कोशिश की है, लेकिन मेरे पास कोई भाग्य नहीं है, तो मैंने सोचा कि मैं यहां पूछूंगा।

जवाबों:


121
System.Net.WebRequestMethods.Http
    .Connect = "CONNECT"
    .Get = "GET"
    .Head = "HEAD"
    .MkCol = "MKCOL"
    .Post = "POST"
    .Put = "PUT"

अंततः, हालांकि; चूंकि constकॉलर में अभिव्यक्त होते हैं, यह "GET" आदि का उपयोग करने के समान है, बस एक टाइपो के जोखिम के बिना।


22
दिलचस्प है, कोई DELETE पद्धति और "*" क्यों नहीं है?
— कुन्सविक.देव।

9
और यह विकल्प और ट्रेस गायब है।
— पॉल कुयकेन्डल

7
PATCHक्रिया भी गायब है।
— RBT

42

यह भी मौजूद है System.Net.Http.HttpMethodजो एनम के बजाय सेवा कर सकता है। आप उनकी तुलना कर सकते हैं aMethod == HttpMethod.Get, आदि स्ट्रिंग विधि नाम कॉल जैसे HttpMethod.Get.Method।


6
यह
— Asp.Net

2
मैं सिर्फ यह सोच रहा हूं कि उन्होंने स्थैतिक रूप से स्थिर क्षेत्रों के बजाय उन क्षेत्रों को स्थिरांक घोषित क्यों नहीं किया। स्थिरांक का लाभ यह है कि आप उन्हें पैरामीटर चूक (यानी void Request(HttpMethod method = HttpMethod.Get)) के रूप में पारित कर सकते हैं ।
— शिम्मी वेइटहैंडलर

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

1
HttpMethod.Get.Methodएक संकलन समय स्थिर नहीं है :( जहां System.Net.WebRequestMethods.Httpस्थिरांक हैं
— Piotr Kula

1
उनके फायदे या नुकसान की परवाह किए बिना संकलन समय की जरूरत है। उदाहरण के लिए, एक विधि हस्ताक्षर में डिफ़ॉल्ट पैरामीटर। जब मैं System.Net.WebRequestMethods का उपयोग नहीं कर सकता, तो मैं आमतौर पर इसके द्वारा काम करता हूं पासिंग स्ट्रिंग्स द्वारा HttpMethod इसके निर्माता में उपयोग कर सकता है। परेशानी, ज़ाहिर है, उनके दस्तावेज़ स्पष्ट रूप से यह नहीं कहते हैं कि क्या होता है जब एक खराब स्ट्रिंग मान पारित किया जाता है, इसलिए अपने स्वयं के जोखिम पर इस रणनीति का उपयोग करें, डॉक्स.कमीसोनिक.com
— जेसिका पेनेल जू

17

ASP.NET MVC में वे System.Web.Mvc.HttpVerbs में हैं । लेकिन इन विधियों में से एक एनुम मान लेने वाले सभी तरीकों में एक पाठ ओवरराइड है, क्योंकि HTTP क्रियाओं का कोई पूरा सेट नहीं है, केवल वर्तमान में परिभाषित मानों का एक सेट ( यहां और यहां और यहां देखें )।

आप सभी क्रियाओं को शामिल करने वाली एक गणना नहीं बना सकते हैं, क्योंकि संभावना है कि क्रियाओं को जोड़ा जा सकता है, और गणना में ऐसे संस्करण होते हैं जो इस अव्यवहारिक बनाते हैं।


5

में ASP.NET कोर आप में http विधि तार का एक संग्रह मिल जाएगा HttpMethods.cs के तहत वर्ग Microsoft.AspNetCore.Httpनाम स्थान।

यह वर्ग बूलियन हेल्पर्स को भी प्रदान करता है जैसे कि IsGet()या IsPost()बेहतर शब्दार्थ के लिए।

कृपया ध्यान दें कि इन तारों को उजागर किया गया है public static readonly stringऔर जैसा नहीं है constants।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.