Saya menulis aplikasi yang menerima data POST dari layanan pihak ketiga.
Ketika data ini dikirim, saya harus mengembalikan 200 Status Status HTTP.
Bagaimana saya bisa melakukan ini dari controller saya?
Saya menulis aplikasi yang menerima data POST dari layanan pihak ketiga.
Ketika data ini dikirim, saya harus mengembalikan 200 Status Status HTTP.
Bagaimana saya bisa melakukan ini dari controller saya?
Jawaban:
Di controller Anda, Anda akan mengembalikan HttpStatusCodeResult seperti ini ...
[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
}
intdan HttpStatusCode.
200 hanyalah header HTTP normal untuk permintaan yang berhasil. Jika itu semua yang Anda butuhkan, hanya memiliki controllerreturn new EmptyResult();
HttpStatusCodeResult(...)karena itu lebih eksplisit tentang apa yang ingin Anda capai. Sesuai jawaban yang diterima.
Anda cukup mengatur kode status dari respons ke 200 seperti berikut ini
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 });
}
}
Cara untuk melakukan ini dalam. NET Core adalah (pada saat penulisan) sebagai berikut:
public async Task<IActionResult> YourAction(YourModel model)
{
if (ModelState.IsValid)
{
return StatusCode(200);
}
return StatusCode(400);
}
The StatusCode kembali metode jenis StatusCodeResult yang mengimplementasikan IActionResult dan dengan demikian dapat digunakan sebagai jenis kembali tindakan Anda.
Sebagai refactor, Anda dapat meningkatkan keterbacaan dengan menggunakan cast kode status HTTP enum seperti:
return StatusCode((int)HttpStatusCode.OK);
Selain itu, Anda juga bisa menggunakan beberapa tipe hasil bawaan. Sebagai contoh:
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