ฉันกำลังเขียนแอปพลิเคชันที่รับข้อมูล POST จากบริการบุคคลที่สาม
เมื่อข้อมูลนี้ถูกโพสต์ฉันจะต้องส่งคืนรหัสสถานะ HTTP 200 รหัส
ฉันจะทำสิ่งนี้จากคอนโทรลเลอร์ของฉันได้อย่างไร
ฉันกำลังเขียนแอปพลิเคชันที่รับข้อมูล POST จากบริการบุคคลที่สาม
เมื่อข้อมูลนี้ถูกโพสต์ฉันจะต้องส่งคืนรหัสสถานะ HTTP 200 รหัส
ฉันจะทำสิ่งนี้จากคอนโทรลเลอร์ของฉันได้อย่างไร
คำตอบ:
ในตัวควบคุมของคุณคุณจะส่งคืน HttpStatusCodeResult แบบนี้ ...
[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
ทั้งการHttpStatusCode
และ
200 เป็นเพียงส่วนหัว HTTP ปกติสำหรับคำขอที่ประสบความสำเร็จ หากนั่นคือทั้งหมดที่คุณต้องการเพียงมีคอนโทรลเลอร์return new EmptyResult();
HttpStatusCodeResult(...)
แทนเนื่องจากชัดเจนมากขึ้นเกี่ยวกับสิ่งที่คุณพยายามทำ ตามคำตอบที่ยอมรับ
คุณสามารถตั้งรหัสสถานะของการตอบสนองเป็น 200 ได้ดังต่อไปนี้
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 });
}
}
วิธีการทำเช่นนี้ใน. NET Core คือ (ณ เวลาที่เขียน) ดังนี้:
public async Task<IActionResult> YourAction(YourModel model)
{
if (ModelState.IsValid)
{
return StatusCode(200);
}
return StatusCode(400);
}
กระบวนการStatusCodeวิธีส่งกลับชนิดของStatusCodeResultซึ่งใช้IActionResultและสามารถใช้เป็นชนิดส่งคืนของการกระทำของคุณ
ในฐานะที่เป็น refactor คุณสามารถปรับปรุงความสามารถในการอ่านโดยใช้การส่งรหัสสถานะ HTTP เช่น:
return StatusCode((int)HttpStatusCode.OK);
นอกจากนี้คุณยังสามารถใช้ผลลัพธ์บางประเภทที่สร้างขึ้น ตัวอย่างเช่น:
return Ok(); // returns a 200
return BadRequest(ModelState); // returns a 400 with the ModelState as JSON
อ้าง StatusCodeResult - https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.mvc.statuscoderesult?view=aspnetcore-2.1