.NET에서 "HttpRequest.RequestType"및 "WebRequest.Method"값에 대한 상수는 어디에 있습니까?


93

ASP.NET (또는 ) 에서 RequestType의 확인이 필요합니다 . 요청 유형에 문자열 값 " "또는 " "을 사용할 수 있지만 .NET의 일부 클래스 어딘가에 값을 포함하는 상수가 있다고 맹세 할 수 있습니다.HttpRequestWebRequest.MethodPOSTGET

호기심 사람이 어떤 클래스는 이러한 문자열 상수에 대해 알고 있는지 궁금 해서요 GET하고 POST있었다 온라인 검색 나는 시도했습니다.하지만 난 여기 물어 줄 알았는데, 그래서 나는 운이 없었습니다.

답변:


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

하지만 궁극적으로; const표현식은 호출자에게 태워 지기 때문에 오타의 위험없이 "GET"등을 사용하는 것과 동일합니다.


22
흥미롭게도 DELETE 메소드와 "*"가없는 이유는 무엇입니까?
kuncevic.dev

9
그리고 OPTIONS와 TRACE가 없습니다.
Paul Kuykendall

7
PATCH동사도 없습니다.
RBT

44

System.Net.Http.HttpMethod열거 형 대신 사용할 수있는 것도 존재합니다 . 그것들을 비교할 수 있습니다 aMethod == HttpMethod.Get. 문자열 메소드 이름을 얻으려면 예를 들어 HttpMethod.Get.Method.


6
Asp.Net Core에서도 작동 할 수있는 이점이 있습니다
superjos

2
왜 그들이 정적 읽기 전용 필드 대신 상수로 해당 필드를 선언하지 않았는지 궁금합니다. 상수의 장점은 매개 변수 기본값 (예 :)으로 전달할 수 있다는 것 void Request(HttpMethod method = HttpMethod.Get)입니다.
Shimmy Weitzhandler

@Shimmy 상수의 단점은 간단한 대체를 통해 컴파일 타임에 참조 어셈블리에 구워진다는 것입니다. 즉, 상수를 정의하는 어셈블리가 해당 값을 변경하고 교체되는 경우 참조하는 어셈블리는 원래의 잘못된 상수 값을 유지합니다. 어떻게 가능성이 방법은 지금까지 변경됩니다 HTTP, 그러나, 또 다른 이야기는 ...이다
이안 켐프

1
HttpMethod.Get.Method는 컴파일 시간 상수가 아닙니다. :( where System.Net.WebRequestMethods.Httpare constants
Piotr Kula

1
컴파일 시간 상수의 필요성은 장점이나 단점에 관계없이 피할 수 없습니다. 예를 들어, 메소드 서명의 기본 매개 변수입니다. System.Net.WebRequestMethods를 사용할 수없는 경우 일반적으로 HttpMethod가 생성자에서 사용할 수있는 문자열을 전달하여이 문제를 해결합니다. 문제는 물론 해당 설명서에 잘못된 문자열 값이 전달 될 때 발생하는 상황이 명시 적으로 나와 있지 않으므로이
Jessica Pennell 19

17

ASP.NET MVC에서는 System.Web.Mvc.HttpVerbs에 있습니다. 그러나 이러한 열거 형 값 중 하나를 사용하는 모든 메서드에는 전체 HTTP 동사 집합이없고 현재 정의 된 값 집합 만 있기 때문에 텍스트 재정의도 있습니다 ( 여기여기여기 참조 ).

모든 동사를 포함하는 열거 형을 만들 수는 없습니다. 동사가 추가 될 가능성이 있고 열거 형에는 이를 비실용적으로 만드는 버전 관리 문제 가 있기 때문입니다.


5

ASP.NET Core 에서는 네임 스페이스 아래의 HttpMethods.cs 클래스 에서 http 메서드 문자열 컬렉션을 찾을 수 Microsoft.AspNetCore.Http있습니다.

이 클래스는 또한 더 나은 의미 체계를 위해 IsGet()또는 같은 부울 도우미를 제공합니다 IsPost().

이러한 문자열로 노출되어 있습니다 public static readonly string및하지로 constants.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.