|
|
Zverejnené 16. 8. 2016 13:52:38
|
|
|
|

V WebAPI je telo požiadavky (HttpContent) možné čítať iba raz, nie je uložené do vyrovnávacej pamäte a môže byť čítané len dopredu.
Napríklad:
1. Adresa požiadavky: /?id=123&name=bob
Serverová metóda: void Action(int id, názov reťazca) // Všetky parametre sú jednoduché typy, takže všetky budú pochádzať z URL
2. Adresa požiadavky: /?id=123&name=bob
Metóda na strane servera: void Action([FromUri] int id, [FromUri] názov reťazca) // Rovnaké ako vyššie
void Action([FromBody] názov reťazca); Atribút [FormBody] ukazuje, že celé telo sa číta ako reťazec ako argument
3. Adresa požiadavky: /?id=123
Definícia triedy:
public class Customer { // Komplexný typ objektu definovaný public string Name { get; set; } public int Age { get; set; }
}
Metóda na strane servera: void Action(int id, Customer c) // Parameter id sa číta z dotazovacieho reťazca, parameter c je zložitá trieda objektu zákazníka, čítaná z tela cez formátovač
Metóda na strane servera: zrušiť akciu (Zákazník c1, Zákazník c2) // Chyba! Viaceré parametre sú zložité typy a všetky sa snažia čítať z tela, ktoré je možné prečítať len raz
Metóda na strane servera: void action([FromUri] Customer c1, Customer c2) // Áno! Na rozdiel od vyššie uvedenej akcie sa komplexný typ C1 číta z URL a C2 z tela
4. Metóda ModelBinder:
void Action([ModelBinder(MyCustomBinder)] SomeType c) // Označuje, že na vyriešenie parametra sa používa špecifický modelový binder
[ModelBinder(MyCustomBinder)] verejná trieda SomeType { } // Aplikujte toto pravidlo na všetky parametre typu SomeType deklarovaním atribútu [ModelBidner(MyCustomBinder)] pre konkrétny typ SomeType
void Action(SomeType c) // Keďže typ c je SomeType, charakteristiky na SomeType sa aplikujú na určenie jeho viazania na model
Súhrn:
1. Predvolené jednoduché parametre sa prenášajú cez URL parametre, s výnimkami:
1.1 Ak trasa obsahuje id parameter, id parameter prechádza cez trasu;
1.2 Ak je parameter označený ako [FromBody], parameter môže byť jednoduchý parameter a klient ho môže poslať cez POST: $.ajax(url, '=value'), alebo $.ajax({url: url, data: {'': 'value'}});
2. Predvolené komplexné parametre (vlastné triedy entít) sa prenášajú cez POST, s výnimkami:
2.1 Ak je hodnota parametra označená ako [FromUri], parameter môže byť komplexný parameter;
3. Parameter označený [FromBody] sa môže zobraziť iba raz, parameter označený ako [FromUri] sa môže objaviť viackrát, a ak je parameter označený ako [FromUri] jednoduchý parameter, značka môže byť odstránená. |
Predchádzajúci:.NET Oracle multi-tabuľková metóda dotazovania, hlúpa metóda.Budúci:C# používa reflexiu na určenie, či je vlastnosť priradená
|