|
|
Opublikowano 16.08.2016 13:52:38
|
|
|
|

W WebAPI ciało żądania (HttpContent) można odczytać tylko raz, nie jest bufor i można go tylko odczytać dalej.
Na przykład:
1. Adres żądania: /?id=123&name=bob
Metoda po stronie serwera: void Akcja (int id, nazwa ciągu znaków) // Wszystkie parametry są prostymi typami, więc wszystkie pochodzą z adresu URL
2. Adres żądania: /?id=123&name=bob
Metoda po stronie serwera: void Action([FromUri] int id, [FromUri] nazwa ciągu) // Tak samo jak powyżej
void Action([FromBody] nazwa ciągu ciągu); Atrybut [FormBody] pokazuje, że cała twór jest odczytywany jako ciąg jako argument
3. Adres żądania: /?id=123
Definicja klasy:
klasa publiczna Customer { // Złożony typ obiektu zdefiniowany ciąg publiczny Nazwa { get; set; } public int Age { get; set; }
}
Metoda po stronie serwera: void Action(int id, Customer c) // Id parametru odczytuje się ze ciągu zapytania, parametr c to złożona klasa obiektu klienta, odczytywana z ciała przez formatter
Metoda po stronie serwera: akcja anulowania (Klient c1, Klient c2) // Błąd! Wiele parametrów to typy złożone i wszystkie próbują odczytać z ciała, które można odczytać tylko raz
Metoda po stronie serwera: akcja anulowania ([FromUri] Customer c1, Customer c2) // Tak! W przeciwieństwie do powyższej akcji, zespolony typ C1 będzie odczytywany z URL, a C2 z jego ciała
4. Metoda ModelBinder:
void Action([ModelBinder(MyCustomBinder)] SomeType c) // Wskazuje, że do rozwiązania parametru użyto konkretnego bindera modelu
[ModelBinder(MyCustomBinder)] klasa publiczna SomeType { } // Zastosuj tę regułę do wszystkich parametrów typu SomeType, deklarując atrybut [ModelBidner(MyCustomBinder)] do konkretnego typu SomeType
void Action(SomeType c) // Ponieważ typ c to SomeType, cechy SomeType są stosowane, aby określić jego wiązanie modelu
Streszczenie:
1. Domyślne proste parametry są przekazywane przez parametry URL, z wyjątkami:
1.1 Jeśli trasa zawiera parametr id, parametr id jest przekazywany przez trasę;
1.2 Jeśli parametr jest oznaczony jako [FromBody], parametr może być prostym parametrem, a klient może przekazać go przez POST: $.ajax(url, '=value') lub $.ajax({url: url, data: {''value'}});
2. Domyślne parametry złożone (niestandardowe klasy podmiotów) są przekazywane za pomocą POST, z wyjątkami:
2.1 Jeśli wartość parametru jest oznaczona jako [FromUri], parametr może być parametrem zespolonym;
3. Parametr oznaczony [FromBody] może pojawić się tylko raz, parametr oznaczony jako [FromUri] może pojawiać się wielokrotnie, a jeśli parametr oznaczony jako [FromUri] jest prostym parametrem, można go usunąć. |
Poprzedni:.NET Oracle multi-table query method, głupia metoda.Następny:C# wykorzystuje odbicie do określenia, czy przypisana jest właściwość
|