|
|
Yayınlandı 16.08.2016 13:52:38
|
|
|
|

WebAPI'de istek gövdesi (HttpContent) yalnızca bir kez okunabilir, önbelleğe alınamaz ve yalnızca ileriye okunabilir.
Örneğin:
1. Adres istemesi: /?id=123&name=bob
Sunucu tarafı yöntemi: void Action(int id, string name) // Tüm parametreler basit türlerdir, bu yüzden hepsi url'den gelir
2. İstek adresi: /?id=123&name=bob
Sunucu tarafı yöntemi: void Action([FromUri] int id, [FromUri] string name) // Yukarıdakilerle aynı.
void Action([FromBody] dizi adı); [FormBody] özniteliği, tüm bedenin bir argüman olarak bir dizi olarak okunduğunu gösterir
3. İstek adresi: /?id=123
Sınıf Tanımı:
public class Müşteri { // Tanımlanmış karmaşık nesne tipi public string Name { get; set; } public int Age { get; set; }
}
Sunucu tarafı yöntemi: void Action(int id, Customer c) // Parametre kimliği sorgu dizisinden okunur, parametre c karmaşık bir Müşteri nesne sınıfıdır, gövdeden formatlayıcıya okunur
Sunucu tarafı yöntemi: void action(Müşteri c1, Müşteri c2) // Hata! Birden fazla parametre karmaşık türlerdir ve hepsi bir cismden okumaya çalışır, bu da sadece bir kez okunabilir
Sunucu tarafı yöntemi: void action([FromUri] Müşteri c1, Müşteri c2) // Evet! Yukarıdaki eylemin aksine, karmaşık tip C1 URL'den, C2 ise gövdeden okunur
4.ModelBinder yöntemi:
void Action([ModelBinder(MyCustomBinder)] SomeType c) // Parametreyi çözmek için belirli bir model bağlayıcısının kullanıldığını gösterir
[ModelBinder(MyCustomBinder)] public class SomeType { } // Bu kuralı tüm SomeType tip parametrelerine uygulayın; [ModelBidner(MyCustomBinder)] özniteliğini belirli bir SomeType tipine ilan ederek
void Eylem(SomeType c) // c tipi SomeType olduğundan, SomeType üzerindeki özellikler model bağını belirlemek için uygulanır
Özet:
1. Varsayılan basit parametreler, istisnalar dışında URL parametreleri üzerinden geçirilir:
1.1 Eğer rota id parametresini içeriyorsa, id parametresi rotadan geçer;
1.2 Parametre [FromBody] olarak işaretlenmişse, parametre basit bir parametre olabilir ve istemci bunu POST üzerinden iletebilir: $.ajax(url, '=value'), veya $.ajax({url: url, data: {'': 'value'}});
2. Varsayılan karmaşık parametreler (özel varlık sınıfları) POST ile iletilir, istisnalar şunlardır:
2.1 Parametre değeri [FromUri] olarak işaretlenmişse, parametre karmaşık bir parametre olabilir;
3. [FromBody] işaretli bir parametrenin yalnızca bir kez görünmesine izin verilir, [FromUri] olarak işaretlenmiş bir parametre birden fazla kez görünebilir ve [FromUri] olarak işaretlenen parametre basit bir parametreyse, etiket kaldırılabilir. |
Önceki:.NET Oracle çoklu tablo sorgulama yöntemi, aptalca bir yöntem.Önümüzdeki:C#, bir özelliğin atanıp atanmadığını belirlemek için yansıma kullanır
|