[asp.net-mvc] ASP.NET MVC 3 컨트롤러에서 200 HTTP 상태 코드를 반환하는 방법
타사 서비스의 POST 데이터를 수락하는 응용 프로그램을 작성 중입니다.
이 데이터가 게시되면 200 HTTP 상태 코드를 반환해야합니다.
컨트롤러에서 어떻게해야합니까?
답변
컨트롤러에서 다음과 같은 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
}
답변
200은 성공적인 요청을위한 일반적인 HTTP 헤더입니다. 그게 전부 라면 컨트롤러 만 있으면됩니다return new EmptyResult();
답변
다음과 같이 응답의 상태 코드를 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);
}
상태 코드 메소드가 리턴의 유형 StatusCodeResult 구현 IActionResult를 따라서 당신의 행동의 반환 형식으로 사용할 수 있습니다.
리 팩터로서 다음과 같은 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