Tôi đang viết một ứng dụng chấp nhận dữ liệu POST từ dịch vụ của bên thứ ba.
Khi dữ liệu này được POST, tôi phải trả về Mã trạng thái 200 HTTP.
Làm thế nào tôi có thể làm điều này từ bộ điều khiển của tôi?
Tôi đang viết một ứng dụng chấp nhận dữ liệu POST từ dịch vụ của bên thứ ba.
Khi dữ liệu này được POST, tôi phải trả về Mã trạng thái 200 HTTP.
Làm thế nào tôi có thể làm điều này từ bộ điều khiển của tôi?
Câu trả lời:
Trong bộ điều khiển của bạn, bạn sẽ trả lại một httpStatusCodeResult như thế này ...
[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
cũng như một HttpStatusCode
.
200 chỉ là tiêu đề HTTP bình thường cho một yêu cầu thành công. Nếu đó là tất cả những gì bạn cần, chỉ cần có bộ điều khiểnreturn new EmptyResult();
HttpStatusCodeResult(...)
thay vì nó rõ ràng hơn nhiều về những gì bạn đang cố gắng để đạt được. Theo câu trả lời được chấp nhận.
Bạn chỉ có thể đặt mã trạng thái của phản hồi thành 200 như sau
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 });
}
}
Cách để làm điều này trong .NET Core là (tại thời điểm viết) như sau:
public async Task<IActionResult> YourAction(YourModel model)
{
if (ModelState.IsValid)
{
return StatusCode(200);
}
return StatusCode(400);
}
Các StatusCode phương pháp lợi nhuận một loại StatusCodeResult mà thực hiện IActionResult và do đó có thể được sử dụng như một kiểu trả về của hành động của bạn.
Là một công cụ tái cấu trúc, bạn có thể cải thiện khả năng đọc bằng cách sử dụng một loạt các mã trạng thái HTTP như:
return StatusCode((int)HttpStatusCode.OK);
Hơn nữa, bạn cũng có thể sử dụng một số loại kết quả được xây dựng. Ví dụ:
return Ok(); // returns a 200
return BadRequest(ModelState); // returns a 400 with the ModelState as JSON
Tham chiếu StatusCodeResult - https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.mvc.statuscoderesult?view=aspnetcore-2.1