Estou escrevendo um aplicativo que aceita dados POST de um serviço de terceiros.
Quando esses dados são postados, devo retornar um código de status HTTP 200.
Como posso fazer isso no meu controlador?
Estou escrevendo um aplicativo que aceita dados POST de um serviço de terceiros.
Quando esses dados são postados, devo retornar um código de status HTTP 200.
Como posso fazer isso no meu controlador?
Respostas:
No seu controlador, você retornaria um 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 quanto um HttpStatusCode
.
200 é apenas o cabeçalho HTTP normal para uma solicitação bem-sucedida. Se é tudo o que você precisa, basta ter o controladorreturn new EmptyResult();
HttpStatusCodeResult(...)
, pois é muito mais explícito sobre o que você está tentando alcançar. Conforme a resposta aceita.
Você pode simplesmente definir o código de status da resposta para 200 como o seguinte
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 });
}
}
A maneira de fazer isso no .NET Core é (no momento da escrita) da seguinte maneira:
public async Task<IActionResult> YourAction(YourModel model)
{
if (ModelState.IsValid)
{
return StatusCode(200);
}
return StatusCode(400);
}
O método StatusCode retorna um tipo de StatusCodeResult que implementa IActionResult e, portanto, pode ser usado como um tipo de retorno da sua ação.
Como um refator, você pode melhorar a legibilidade usando uma conversão dos enum de códigos de status HTTP, como:
return StatusCode((int)HttpStatusCode.OK);
Além disso, você também pode usar alguns dos tipos de resultados incorporados. Por exemplo:
return Ok(); // returns a 200
return BadRequest(ModelState); // returns a 400 with the ModelState as JSON
Ref. StatusCodeResult - https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.mvc.statuscoderesult?view=aspnetcore-2.1