.NET'te "HttpRequest.RequestType" ve "WebRequest.Method" değerleri sabiti nerede?


92

RequestTypeBir HttpRequestASP.NET (veya WebRequest.Method) içinde kontrol etmem gerekiyor . İstek türü için yalnızca " POST" veya " GET" dize değerlerini kullanabileceğimi biliyorum , ancak .NET'te bazı sınıfların bir yerinde değerleri içeren bir sabit olduğuna yemin edebilirdim.

Meraktan kimse hangi sınıf bu dize sabitleri için biliyordum acaba GETve POSTiçinde bulunduğumuz çevrimiçi arama denedim. Ama buraya sormak düşündüm bu yüzden, hiç şansım oldu.

Yanıtlar:


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

Nihayetinde yine de; beri constifadeler arayan yakılır, bu sadece bir yazım hatası riski olmaksızın, vs "GET" kullanarak aynıdır.


22
İlginç, neden DELETE yöntemi ve "*" yok?
kuncevic.dev

9
Ve OPTIONS ve TRACE eksik.
Paul Kuykendall

7
PATCHfiil de eksik.
MHK

42

Ayrıca System.Net.Http.HttpMethodenum yerine hizmet verebilen var . Bunları aMethod == HttpMethod.Getvb. Karşılaştırabilirsiniz . Dize yöntemi adı çağırmak için örn HttpMethod.Get.Method.


6
Bunun Asp.Net Core'da da çalışma avantajı var
superjos

2
Sadece neden bu alanları statik salt okunur alanlar yerine sabitler olarak ilan etmediklerini merak ediyorum. Sabitlerin avantajı, onları parametre varsayılanları (yani void Request(HttpMethod method = HttpMethod.Get)) olarak geçirebilmenizdir .
Shimmy Weitzhandler

@Shimmy Sabitlerin dezavantajı, basit değiştirme yoluyla derleme sırasında referans derlemesine dahil edilmeleridir. Bu, sabitleri tanımlayan derleme değerlerini değiştirir ve değiştirilirse, herhangi bir referans derlemesinin orijinal, yanlış olmayan sabit değerleri koruyacağı anlamına gelir. Bununla birlikte, HTTP yöntemlerinin ne kadar değişeceği başka bir hikaye ...
Ian Kemp

1
HttpMethod.Get.MethodBir derleme zamanı sabiti :( DEĞİLDİR System.Net.WebRequestMethods.Httpsabitlerdir
Piotr Kula

1
Derleme süresi sabitlerine duyulan ihtiyaç, avantajları ve dezavantajları ne olursa olsun kaçınılmazdır. Örneğin, bir yöntem imzasındaki varsayılan parametreler. System.Net.WebRequestMethods'ı kullanamadığımda, genellikle HttpMethod'un yapıcısında kullanabileceği dizeleri geçerek bu sorunu çözüyorum. Sorun, elbette, belgelerinin kötü bir dize değeri iletildiğinde ne olacağını açıkça söylememesidir, bu nedenle bu stratejiyi kendi sorumluluğunuzda kullanın, docs.microsoft.com/en-us/dotnet/api/…
Jessica Pennell

17

ASP.NET MVC'de System.Web.Mvc.HttpVerbs içindedirler . Ancak, bu enum değerlerinden birini alan tüm yöntemlerin bir metin geçersiz kılma özelliği de vardır, çünkü tam bir HTTP fiili kümesi yoktur, yalnızca şu anda tanımlanmış bir dizi değer ( buraya ve buraya ve buraya bakın )

Tüm fiilleri kapsayan bir sıralama oluşturamazsınız çünkü fiillerin eklenme olasılığı vardır ve numaralandırmalarda bunu kullanışsız kılan sürüm oluşturma sorunları vardır.


5

In ASP.NET Çekirdek sen http yöntemi dizeleri bir koleksiyon bulacaksınız HttpMethods.cs altında sınıfında Microsoft.AspNetCore.Httpad.

Bu sınıf aynı zamanda IsGet()veya gibi boole yardımcıları da sunarIsPost() daha iyi anlamlar için.

Lütfen bu dizelerin olarak public static readonly stringve değil olarak gösterildiğini unutmayın constants.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.