|
|
Objavljeno na 16. 08. 2016 13:52:38
|
|
|
|

V WebAPI-ju je mogoče telo zahteve (HttpContent) prebrati le enkrat, ne predpomniti in ga je mogoče prebrati le naprej.
Na primer:
1. Naslov za zahtevo: /?id=123&name=bob
Metoda na strežniški strani: void Action(int id, ime stringa) // Vsi parametri so preproste vrste, zato bodo vsi prišli iz URL-ja
2. Naslov za zahtevo: /?id=123&name=bob
Strežniška metoda: void Action([FromUri] int id, [FromUri] ime stringa) // Enako kot zgoraj
void Action([FromBody] ime niza); Atribut [FormBody] prikazuje, da se celotno telo bere kot niz kot argument
3. Naslov zahtevka: /?id=123
Opredelitev razreda:
javni razred Customer { // Kompleksen tip objekta, definiran javni niz Ime { get; set; } public int Age { get; set; }
}
Strežniška metoda: void Action(int id, Customer c) // Parameter id se prebere iz poizvedbenega niza, parameter c je kompleksen razred objekta stranke, ki se prebere iz telesa skozi formatter
Metoda na strežniški strani: razveljavi dejanje (stranka c1, stranka c2) // Napaka! Več parametrov je kompleksnih tipov in vsi poskušajo brati iz telesa, ki ga je mogoče prebrati le enkrat
Metoda na strežniški strani: akcija razveljavi ([FromUri] Customer c1, Customer c2) // Da! Za razliko od zgornje akcije se kompleksni tip C1 bere iz URL-ja, C2 pa iz telesa
4. ModelBinder metoda:
void Action([ModelBinder(MyCustomBinder)] SomeType c) // Označuje, da se za razrešitev parametra uporablja določen model binder
[ModelBinder(MyCustomBinder)] javni razred SomeType { } // To pravilo uporabite na vse parametre tipa SomeType tako, da atribut [ModelBidner(MyCustomBinder)] določite za določen tip SomeType
void Action(SomeType c) // Ker je tip c SomeType, se lastnosti na SomeType uporabijo za določitev njegove vezanosti na model
Povzetek:
1. Privzeti preprosti parametri se prenašajo prek URL parametrov, z izjemo:
1.1 Če pot vsebuje id parameter, se id parameter prenese skozi pot;
1.2 Če je parameter označen kot [FromBody], je parameter lahko preprost parameter, odjemalec pa ga lahko posreduje preko POST: $.ajax(url, '=value'), ali $.ajax({url: url, data: {'': 'value'}});
2. Privzeti kompleksni parametri (prilagojeni razredi entitet) se posredujejo preko POST, z izjemami:
2.1 Če je vrednost parametra označena kot [FromUri], je parameter lahko kompleksen parameter;
3. Parameter, označen z [FromBody], se lahko pojavi le enkrat, parameter, označen kot [FromUri], se lahko pojavi večkrat, in če je parameter, označen kot [FromUri], preprost parameter, se oznaka lahko odstrani. |
Prejšnji:.NET Oracle večtabelna metoda poizvedb, neumna metoda.Naslednji:C# uporablja refleksijo za določanje, ali je lastnost dodeljena
|