J'écris une application qui accepte les données POST d'un service tiers.
Lorsque ces données sont postées, je dois renvoyer un code d'état HTTP 200.
Comment puis-je faire cela à partir de mon contrôleur ?
J'écris une application qui accepte les données POST d'un service tiers.
Lorsque ces données sont postées, je dois renvoyer un code d'état HTTP 200.
Comment puis-je faire cela à partir de mon contrôleur ?
Dans votre contrôleur, vous renverriez 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
}
@dan, ce n'est pas nécessaire. Il existe des surcharges qui prennent un int
ainsi qu'un HttpStatusCode
.
Pour renvoyer un code d'état 204, procédez comme suit : renvoyez un nouveau HttpStatusCodeResult(HttpStatusCode.NoContent) ;
[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) la suivante :
public async Task<IActionResult> YourAction(YourModel model)
{
if (ModelState.IsValid)
{
return StatusCode(200);
}
return StatusCode(400);
}
Le site StatusCode renvoie un type de StatusCodeResult qui met en œuvre IActionResult et peut donc être utilisé comme type de retour de votre action.
En tant que refactor, vous pourriez améliorer la lisibilité en utilisant un cast de l'enum des codes de statut HTTP comme :
return StatusCode((int)HttpStatusCode.OK);
En outre, 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
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.