Sto scrivendo un'applicazione che accetta i dati POST da un servizio di terze parti.
Quando questi dati vengono POST, devo restituire un codice di stato 200 HTTP.
Come posso farlo dal mio controller?
Sto scrivendo un'applicazione che accetta i dati POST da un servizio di terze parti.
Quando questi dati vengono POST, devo restituire un codice di stato 200 HTTP.
Come posso farlo dal mio controller?
Risposte:
Nel controller restituiresti un HttpStatusCodeResult in questo modo ...
[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
che un HttpStatusCode
.
200 è solo la normale intestazione HTTP per una richiesta riuscita. Se è tutto ciò di cui hai bisogno, basta avere il controllerreturn new EmptyResult();
HttpStatusCodeResult(...)
invece in quanto è molto più esplicito su ciò che stai cercando di ottenere. Secondo la risposta accettata.
Puoi semplicemente impostare il codice di stato della risposta su 200 come il seguente
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 });
}
}
Il modo per farlo in .NET Core è (al momento della scrittura) come segue:
public async Task<IActionResult> YourAction(YourModel model)
{
if (ModelState.IsValid)
{
return StatusCode(200);
}
return StatusCode(400);
}
Il metodo StatusCode restituisce un tipo di StatusCodeResult che implementa IActionResult e può quindi essere utilizzato come tipo di ritorno dell'azione.
Come refactor, potresti migliorare la leggibilità usando un cast dei codici di stato HTTP enum come:
return StatusCode((int)HttpStatusCode.OK);
Inoltre, è possibile utilizzare anche alcuni dei tipi di risultati integrati. Per esempio:
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