J'écris une application qui accepte les données POST d'un service tiers.
Lorsque ces données sont publiées, je dois retourner un code d'état HTTP 200.
Comment puis-je le faire depuis mon contrôleur?
J'écris une application qui accepte les données POST d'un service tiers.
Lorsque ces données sont publiées, je dois retourner un code d'état HTTP 200.
Comment puis-je le faire depuis mon contrôleur?
Réponses:
Dans votre contrôleur, vous retourneriez un HttpStatusCodeResult comme ceci ...
[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
et un HttpStatusCode
.
200 est juste l'en-tête HTTP normal pour une requête réussie. Si c'est tout ce dont vous avez besoin, ayez simplement le contrôleurreturn new EmptyResult();
HttpStatusCodeResult(...)
place car il est beaucoup plus explicite de ce que vous essayez de réaliser. Selon la réponse acceptée.
Vous pouvez simplement définir le code d'état de la réponse à 200 comme suit
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 façon de procéder dans .NET Core est (au moment de la rédaction) comme suit:
public async Task<IActionResult> YourAction(YourModel model)
{
if (ModelState.IsValid)
{
return StatusCode(200);
}
return StatusCode(400);
}
La méthode StatusCode renvoie un type de StatusCodeResult qui implémente IActionResult et peut donc être utilisé comme type de retour de votre action.
En tant que refactor, vous pouvez améliorer la lisibilité en utilisant un transtypage des codes d'état HTTP énumérés comme:
return StatusCode((int)HttpStatusCode.OK);
De plus, vous pouvez également utiliser certains des types de résultats intégrés. Par exemple:
return Ok(); // returns a 200
return BadRequest(ModelState); // returns a 400 with the ModelState as JSON
Réf. StatusCodeResult - https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.mvc.statuscoderesult?view=aspnetcore-2.1