Estoy escribiendo una aplicación que acepta datos POST de un servicio de terceros.
Cuando se envían estos datos, debo devolver un código de estado HTTP 200.
¿Cómo puedo hacer esto desde mi controlador?
Estoy escribiendo una aplicación que acepta datos POST de un servicio de terceros.
Cuando se envían estos datos, debo devolver un código de estado HTTP 200.
¿Cómo puedo hacer esto desde mi controlador?
Respuestas:
En su controlador, devolvería un HttpStatusCodeResult como este ...
[HttpPost]
public ActionResult SomeMethod(...your method parameters go here...)
{
// todo: put your processing code here
//If not using MVC5
return new HttpStatusCodeResult(200);
//If using MVC5
return new HttpStatusCodeResult(HttpStatusCode.OK); // OK = 200
}
int
tanto como un HttpStatusCode
.
200 es solo el encabezado HTTP normal para una solicitud exitosa. Si eso es todo lo que necesita, solo tenga el controladorreturn new EmptyResult();
HttpStatusCodeResult(...)
lugar, debe usarlo, ya que es mucho más explícito sobre lo que está tratando de lograr. Según la respuesta aceptada.
Simplemente puede configurar el código de estado de la respuesta a 200 como el siguiente
public ActionResult SomeMethod(parameters...)
{
//others code here
...
Response.StatusCode = 200;
return YourObject;
}
[HttpPost]
public JsonResult ContactAdd(ContactViewModel contactViewModel)
{
if (ModelState.IsValid)
{
var job = new Job { Contact = new Contact() };
Mapper.Map(contactViewModel, job);
Mapper.Map(contactViewModel, job.Contact);
_db.Jobs.Add(job);
_db.SaveChanges();
//you do not even need this line of code,200 is the default for ASP.NET MVC as long as no exceptions were thrown
//Response.StatusCode = (int)HttpStatusCode.OK;
return Json(new { jobId = job.JobId });
}
else
{
Response.StatusCode = (int)HttpStatusCode.BadRequest;
return Json(new { jobId = -1 });
}
}
La forma de hacer esto en .NET Core es (en el momento de la escritura) de la siguiente manera:
public async Task<IActionResult> YourAction(YourModel model)
{
if (ModelState.IsValid)
{
return StatusCode(200);
}
return StatusCode(400);
}
El método StatusCode devuelve un tipo de StatusCodeResult que implementa IActionResult y, por lo tanto, puede usarse como un tipo de retorno de su acción.
Como refactorizador, puede mejorar la legibilidad utilizando un reparto de la enumeración de los códigos de estado HTTP como:
return StatusCode((int)HttpStatusCode.OK);
Además, también puede usar algunos de los tipos de resultados integrados. Por ejemplo:
return Ok(); // returns a 200
return BadRequest(ModelState); // returns a 400 with the ModelState as JSON
Árbitro. StatusCodeResult - https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.mvc.statuscoderesult?view=aspnetcore-2.1