|
|
Paskelbta 2016-08-16 13:52:38
|
|
|
|

WebAPI užklausos turinį (HttpContent) galima perskaityti tik vieną kartą, nesaugoti talpykloje ir skaityti tik į priekį.
Pavyzdžiui:
1. Užklausos adresas: /?id=123&name=bob
Serverio metodas: void Action(int id, eilutės pavadinimas) // Visi parametrai yra paprasti tipai, todėl jie visi bus iš URL
2. Užklausos adresas: /?id=123&name=bob
Serverio metodas: void Action([FromUri] int id, [FromUri] eilutės pavadinimas) // Tas pats, kaip aukščiau
void Action([FromBody] eilutės pavadinimas); Atributas [FormBody] rodo, kad visas tekstas skaitomas kaip eilutė kaip argumentas
3. Užklausos adresas: /?id=123
Klasės apibrėžimas:
viešoji klasė Klientas { // Apibrėžtas sudėtingas objekto tipas viešoji eilutė Pavadinimas { get; rinkinys; } viešas int Amžius { gauti; rinkinys; }
}
Serverio metodas: void Action(int id, Customer c) // Parametro ID skaitomas iš užklausos eilutės, parametras c yra sudėtinga kliento objektų klasė, skaitoma iš teksto per formatuotoją
Serverio pusės metodas: anuliuoti veiksmą (klientas c1, klientas c2) // Klaida! Keli parametrai yra sudėtingi tipai ir visi bando nuskaityti iš kūno, kurį galima perskaityti tik vieną kartą
Serverio metodas: void action([FromUri] Customer c1, Customer c2) // Taip! Skirtingai nuo aukščiau pateikto veiksmo, sudėtingas C1 tipas bus nuskaitytas iš URL, o C2 – iš pagrindinio teksto
4. ModelBinder metodas:
void Action([ModelBinder(MyCustomBinder)] SomeType c) // Nurodo, kad parametrui išspręsti naudojamas konkretus modelio segtuvas
[ModelBinder(MyCustomBinder)] viešoji klasė SomeType { } // Taikykite šią taisyklę visiems SomeType tipo parametrams, deklaruodami [ModelBidner(MyCustomBinder)] atributą konkrečiam tipui SomeType
void Action(SomeType c) // Kadangi c tipas yra SomeType, SomeType charakteristikos taikomos jo modelio susiejimui nustatyti
Suvestinė:
1. Numatytieji paprasti parametrai perduodami per URL parametrus, išskyrus šias išimtis:
1.1 Jei maršrute yra id parametras, id parametras perduodamas per maršrutą;
1.2 Jei parametras pažymėtas kaip [FromBody], parametras gali būti paprastas parametras, ir klientas gali jį perduoti per POST: $.ajax(url, '=value') arba $.ajax({url: url, data: {'': 'value'}});
2. Numatytieji sudėtingi parametrai (pasirinktinės objektų klasės) perduodami per POST, išskyrus išimtis:
2.1 Jei parametro reikšmė pažymėta kaip [FromUri], parametras gali būti sudėtingas parametras;
3. Parametras, pažymėtas [FromBody], gali būti rodomas tik vieną kartą, parametras, pažymėtas kaip [FromUri], gali būti rodomas kelis kartus, o jei parametras, pažymėtas kaip [FromUri], yra paprastas parametras, žymą galima pašalinti. |
Ankstesnis:.NET Oracle kelių lentelių užklausos metodas, kvailas metodas.Kitą:C# naudoja atspindį, kad nustatytų, ar ypatybė priskirta
|