Where is the constant for "HttpRequest.RequestType" and "WebRequest.Method" values in .NET?
I need to check the RequestType
of an HttpRequest
in ASP.NET (or WebRequest.Method
). I know that I can just use the string values "POST
" or "GET
" for the request type, but I could have sworn there was a constant somewhere in some class in .NET that contained the values.
Out of curiosity I was wondering if anyone knew what class these string constants for GET
and POST
were in. I've tried searching online but I've had no luck, so I thought I'd ask here.
Solution 1:
System.Net.WebRequestMethods.Http
.Connect = "CONNECT"
.Get = "GET"
.Head = "HEAD"
.MkCol = "MKCOL"
.Post = "POST"
.Put = "PUT"
Ultimately, though; since const
expressions are burned into the caller, this is identical to using "GET" etc, just without the risk of a typo.
Solution 2:
Also exists System.Net.Http.HttpMethod
which can serve instead of enum. You can compare them aMethod == HttpMethod.Get
, etc. To get string method name call e.g. HttpMethod.Get.Method
.
Solution 3:
In ASP.NET MVC they're in System.Web.Mvc.HttpVerbs. But all methods that take one of these enum values also has a text override, as there is no complete set of HTTP verbs, only a set of currently defined values (see here and here and here).
You can't create an enumeration that covers all verbs, as there is the possibility that verbs can be added, and enumerations have versioning issues that make this impractical.
Solution 4:
In ASP.NET Core you will find a collection of http method strings in the HttpMethods.cs class under the Microsoft.AspNetCore.Http
namespace.
This class also offers boolean helpers such as IsGet()
or IsPost()
for better semantics.
Please note that these strings are exposed as public static readonly string
and not as constants
.
UPDATE 2020-05-17: GetCanonicalizedValue(string method)
was added to the HttpMethods.cs
class in ASP.NET Core v5, which returns the static instance equivalent to the provided string method name.