Приветствую.
есть класс оборудования:
class Equipment
{
[Required] Guid TypeId;
[Required] string SerialNumber;
}
Хочу такие перегрузки post метода:
1. принимающего одну единицу оборудования FromUri
public IHttpActionResult Create([FromUri]Equipment equipment)
2. принимающего массив оборудования FromBody
public IHttpActionResult Create([FromBody]Equipment[] equipments)
такое вообще возможно сделать для
одного route?
Здравствуйте, AK107, Вы писали:
AK>1. принимающего одну единицу оборудования FromUri
AK>AK>public IHttpActionResult Create([FromUri]Equipment equipment)
AK>
AK>2. принимающего массив оборудования FromBody
AK>AK>public IHttpActionResult Create([FromBody]Equipment[] equipments)
AK>
AK>такое вообще возможно сделать для одного route?
Для одного, разумеется, нет — как, по твоему, выбирать какой метод звать в этом случае?
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
Здравствуйте, AndrewVK, Вы писали:
AVK>Для одного, разумеется, нет — как, по твоему, выбирать какой метод звать в этом случае?
хотелось бы в зависимости от наличия параметров (required) в в url
как я понимаю route такого не поддерживает
может есть идея как route назвать?
Здравствуйте, AK107, Вы писали:
AK>хотелось бы в зависимости от наличия параметров (required) в в url
AK>как я понимаю route такого не поддерживает
Почему не поддерживает? Регистрируешь два разных роутинга для разных методов. Единственное, сами параметры должны быть в основной части url, а не в query parameters — ограничение uri templates.
Если же непременно хочется в query parameters параметры — поиграйся с IRouteConstraint
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
Здравствуйте, AK107, Вы писали:
AK>такое вообще возможно сделать для одного route?
Можно. Смотри
ActionMethodSelectorAttribute.
public sealed class EquipmentMethod : ActionMethodSelectorAttribute
{
public override bool IsValidForRequest(ControllerContext controllerContext, MethodInfo methodInfo)
{
var request = controllerContext.HttpContext.Request;
// здесь твоя проверка
}
}
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Здравствуйте, AK107, Вы писали:
AK>2. принимающего массив оборудования FromBody
AK>AK>public IHttpActionResult Create([FromBody]Equipment[] equipments)
AK>
AK>такое вообще возможно сделать для одного route?
[HttpPost]
public IHttpActionResult Create(Equipment equipment, Equipment[] equipments)
Так разве не работает?
P.S.: параметры передаются через URL только для метода GET.