I WebAPI kan forespørselskroppen (HttpContent) bare leses én gang, ikke caches, og kan kun leses videre.
For eksempel:
1. Forespørselsadresse: /?id=123&name=bob
Server-side metode: void Action(int id, strengnavn) // Alle parametere er enkle typer, så de kommer alle fra url-en
2. Forespørselsadresse: /?id=123&name=bob
Server-side metode: void Action([FromUri] int id, [FromUri] strengnavn) // Samme som ovenfor
void Action ([FromBody] strengnavn); [FormBody]-attributtet viser at hele kroppen leses som en streng som et argument
3. Forespørselsadresse: /?id=123
Klassedefinisjon:
offentlig klasse Customer { // En kompleks objekttype definert offentlig strengnavn { get; sett; } offentlig int Age { get; sett; }
}
Server-side metode: void Action(int id, Customer c) // Parameter-id leses fra spørringsstrengen, parameter c er en kompleks Customer-objektklasse, lest fra body via formatter
Server-side metode: void action(Kunde c1, Kunde c2) // Feil! Flere parametere er komplekse typer og prøver alle å lese fra en kropp, som bare kan leses én gang
Server-side metode: void action([FromUri] Kunde c1, Kunde c2) // Ja! I motsetning til handlingen ovenfor, vil den komplekse typen C1 bli lest fra URL-en og C2 fra brødteksten
4. ModelBinder-metoden:
void Action([ModelBinder(MyCustomBinder)] SomeType c) // Indikerer at en spesifikk modellbinder brukes til å løse parameteren
[ModelBinder(MyCustomBinder)] offentlig klasse SomeType { } // Bruk denne regelen på alle SomeType-typeparametere ved å erklære attributtet [ModelBidner(MyCustomBinder)] til en spesifikk type SomeType
void Action(SomeType c) // Siden typen c er SomeType, brukes egenskapene på SomeType for å bestemme modellbindingen
Sammendrag:
1. Standard enkle parametere sendes gjennom URL-parametere, med unntak:
1.1 Hvis ruten inneholder id-parameteren, sendes id-parameteren gjennom ruten;
1.2 Hvis parameteren er merket som [FromBody], kan parameteren være en enkel parameter, og klienten kan sende den via POST: $.ajax(url, '=value'), eller $.ajax({url: url, data: {'': 'value'}});
2. De standard komplekse parameterne (tilpassede entitetsklasser) sendes via POST, med unntak:
2.1 Hvis parameterverdien er merket som [FromUri], kan parameteren være en kompleks parameter;
3. En parameter merket [FromBody] kan kun vises én gang, en parameter merket som [FromUri] kan forekomme flere ganger, og hvis parameteren merket som [FromUri] er en enkel parameter, kan taggen fjernes. |