Итак, у меня есть метод, который принимает некоторые данные JSON и привязывает данные к некоторым переменным.Маршрут содержит только имя метода, ничего больше.
Возможно ли иметь ограничение маршрута, которое просматривает данные POST и проверяет некоторые переменные, чтобы определить, является ли это правильный маршрут?
Методы:
public ActionResult GetDataV1(string userId)
{
// Do stuff one way
}
public ActionResult GetDataV2(string userId)
{
// Do stuff another way
}
Маршруты:
routes.MapRoute(
"API GetData V1",
"GetData",
new { controller = "API", action = "GetDataV1" },
new { version = new APIVersionRoutingConstraint("1") }
);
routes.MapRoute(
"API GetData V2",
"GetData",
new { controller = "API", action = "GetDataV2" },
new { version = new APIVersionRoutingConstraint("2") }
);
Клиент отправит { "version":"1", "userId":"mrjohn" }
в /GetData
и получит ответ от GetDataV1
.APIVersionRoutingConstraint
гарантирует, что правильный метод вызывается в зависимости от переменной version
.
Было бы хорошей практикой пытаться десериализовать поток запросов внутри ограничения?Может быть, было бы лучше поместить версию в URL, например /GetData/1
, а другие переменные в теле JSON?