Я разрабатываю REST API и у меня возникает проблема при попытке доступа через HTTP-POST.
В моем проекте в «ApiAreaRegistration» у меня есть это определение:
context.MapRoute(
"AccesoRegistro",
"Api/Registros/Registro/{email}/{fecha}",
new
{
controller = "Registros",
action = "Registro",
email = UrlParameter.Optional,
fecha = UrlParameter.Optional
}
);
«email» и «fecha» являются необязательными параметрами.
В mi «RegistroController» я определил:
public JsonResult Registro(int? id, Registro reg)
{
switch (Request.HttpMethod)
{
case "POST":
return Json(registroManager.InsertarRegistroComidas(reg));
case "GET":
return Json(registroManager.ObtenerRegistros(reg.email, reg.fecha),
JsonRequestBehavior.AllowGet);
}
return Json(new { Error = true, Message = "Operación HTTP desconocida" });
}
Я хочу использовать только методы POST и GET.Я тестирую с плагином Firefox под названием «RESTED», и когда я использую HTTP-GET, он работает нормально.Я получаю доступ к REST с помощью метода Get, используя: http://localhost:puerto/Api/Registros/registro/email/12-12-2000. REST возвращает мне ожидаемое значение.
Если я попытаюсь выполнить HTTP-POST, выполнив http://localhost:puerto/Api/Registros/registro (без дополнительных параметров), сервер вернет мне ошибку 404: «Ресурс не найден».Я устанавливаю точку останова внутри метода Controller, в предложении switch (), и когда я пытаюсь получить доступ с помощью HTTP-POST, никогда не выполняю этот метод.
public JsonResult Registro(int? id, Registro reg)
{
switch (Request.HttpMethod) <-- Here i set the breakpoint
{
case "POST":
return Json(registroManager.InsertarRegistroComidas(reg));
case "GET":
return Json(registroManager.ObtenerRegistros(reg.email, reg.fecha),
JsonRequestBehavior.AllowGet);
}
return Json(new { Error = true, Message = "Operación HTTP desconocida" });
}
Я пытаюсь сделать это, задав настройку [HttpPost] над методом, подобным этому:
[HttpPost]
public JsonResult InsertarRegistro(Registro reg)
{
return Json(registroManager.InsertarRegistroComidas(reg));
}
И я определил этот путь в ApiAreaRegistration:
context.MapRoute(
"AccesoInsertarRegistro",
"Api/InsertarUnRegistro",
new
{
controller = "Registros",
action = "InsertarRegistro",
}
);
В RESTED, если я делаю HTTP-POST, используя http://server:port/api/insertarunregistro со всеми необходимыми параметрами, метод "InsertarRegistro" выполняется, но параметр "Registro reg" равен нулю, у меня 5 атрибутов в этом классе, и все равно нулю.
Один из способов возвращает мне404, другой способ возвращает мне нулевые параметры ... Что я могу сделать?Что я делаю не так?