|
|
Публикувано в 16.08.2016 г. 13:52:38 ч.
|
|
|
|

В WebAPI тялото на заявката (HttpContent) може да се чете само веднъж, не се кешира и може да се чете само напред.
Например:
1. Адрес за заявка: /?id=123&name=bob
Метод от страна на сървъра: void Action(int id, име на низ) // Всички параметри са прости типове, така че всички ще идват от URL адреса
2. Адрес за заявка: /?id=123&name=bob
Сървърен метод: void Action([FromUri] int id, [FromUri] име на низ) // Същото като по-горе
void Action ([FromBody] име на низ); Атрибутът [FormBody] показва, че цялото тяло се чете като низ като аргумент
3. Адрес за заявка: /?id=123
Определение на класа:
публичен клас Customer { // Дефиниран сложен тип обект public string Name { get; декорация; } public int Age { get; декорация; }
}
Метод от страна на сървъра: void Action(int id, Customer c) // Parameter id се чете от низа за заявки, параметър c е сложен клас обект Customer, четен от тялото до formatter
Метод от страна на сървъра: void action (Клиент c1, Клиент c2) // Грешка! Множество параметри са сложни типове и всички се опитват да четат от тяло, което може да се прочете само веднъж
Метод от страна на сървъра: void action([FromUri] Клиент c1, Клиент c2) // Да! За разлика от горното действие, комплексният тип C1 ще се чете от URL адреса, а C2 – от тялото
4.ModelBinder метод:
void Action([ModelBinder(MyCustomBinder)] SomeType c) // Показва, че конкретен моделен binder се използва за разрешаване на параметъра
[ModelBinder(MyCustomBinder)] публичен клас SomeType { } // Приложи това правило към всички параметри на типа SomeType, като обявиш атрибута [ModelBidner(MyCustomBinder)] към конкретен тип SomeType
void Action(SomeType c) // Тъй като типът c е SomeType, характеристиките на SomeType се прилагат, за да се определи неговото свързване с модела
Резюме:
1. Стандартните прости параметри се предават през URL параметрите, с изключения:
1.1 Ако маршрутът съдържа id-параметъра, id параметърът се предава през маршрута;
1.2 Ако параметърът е маркиран като [FromBody], параметърът може да бъде прост параметър и клиентът може да го предаде чрез POST: $.ajax(url, '=стойност'), или $.ajax({url: url, данни: {'': 'value'}});
2. Стандартните комплексни параметри (класове на персонализирани обекти) се предават чрез POST, с изключения:
2.1 Ако стойността на параметъра е маркирана като [FromUri], параметърът може да бъде комплексен параметър;
3. Параметър, маркиран като [FromBody], може да се появи само веднъж, параметър, маркиран като [FromUri], може да се появява многократно, и ако параметърът, маркиран като [FromUri], е прост параметър, тагът може да бъде премахнат. |
Предишен:.NET Oracle multi-table query метод, глупав метод.Следващ:C# използва отражение, за да определи дали свойство е присвоено
|