Controller 내부에 요청을 받는 Action Method는 처리결과에 따라 다양한 응답을 반환할 수 있으며 이에 관한 대략적인 내용을 살펴보고자 합니다.
액션 메서드에서 특정 상태 값을 반환하려면 우선 반환형 식이 IActionResult로 지정되어 있어야 합니다.
[HttpGet]
public IActionResult Get()
{
}
정상적으로 어떤 처리가 완료되었다면 기본적으로 200 OK 상태를 반환할 수 있습니다.
[HttpGet]
public IActionResult Get()
{
return Ok();
}
참고로 OK() 메서드 뿐만 아니라 아래에 설명되는 거의 모든 메서드는 단독으로 응답을 하거나 필요한 경우 문자열, 객체 등을 전달해 상태 응답과 함께 위에 보시는 것처럼 구체적인 응답 내용을 함께 전달할 수 있습니다.
[HttpGet]
public IActionResult Get()
{
return Ok();
//return Ok("완료되었습니다.");
//또는
//return Ok(new student { id = 10, name = "홍길순" });
}
잘못된 요청이라면 400 BedRequest로 응답하며
[HttpGet]
public IActionResult Get()
{
return BadRequest();
}
201 Created는 CreateAt~() 메서드로 응답하고 204 No Content는 NoContent() 메서드로 응답합니다.
[HttpGet]
public IActionResult Get()
{
return CreatedAtAction("Get", new { id = 100 });
}
서식있는 문자 열등을 반환하는 경우는 Content()가 사용되고
[HttpGet]
public IActionResult Get()
{
return Content("안녕하세요.");
}
500 Internal Server Error은 Problem() 메서드가 사용됩니다.
[HttpGet]
public IActionResult Get()
{
return Problem("오류입니다.");
}
409 Conflict는 Conflict() 메서드로, 404 Not Found라면 NotFound() 메서드를 통해 응답할 수 있는데
[HttpGet]
public IActionResult Get()
{
return NotFound("찾을 수 없습니다.");
}
프로젝트 전체에 걸쳐 404에 대한 응답을 대신하고자 한다면 startup.cs의 Configure메서드에서 인라인 미들웨어를 다음과 같이 추가해 주면 됩니다.
app.Run(async (context) => {
context.Response.Headers["Content-Type"] = "text/html; charset=utf-9";
await context.Response.WriteAsync("찾을 수 없습니다.");
});
ASP.NET Core Wwb API는 기본이 Json 포맷의 반환하지만 명시적으로 특정 객체를 Json으로 반환시킬 수도 있습니다.
[HttpGet]
public IActionResult Get()
{
student std = new student() { id = 1, name = "홍길동" };
return new JsonResult(std);
}
참고로 기본적인 응답이외에 추가적인 데이터를 반환하는 경우 드물지만 응답헤더에 데이터를 담아 전송하는 사레가 있습니다.
Response.Headers.Add("aaa", "bbb");
다만 헤더를 추가할때 Key로는 'X-'형태를 추가하는 것이 관례입니다.
'.NET > ASP.NET' 카테고리의 다른 글
[ASP.NET Core Web API] 'IAsyncEnumerable Reader' reached the configured maximum size of the buffer when enumerating a value of type (0) | 2021.03.30 |
---|---|
[ASP.NET Core] IIS 호스팅 (0) | 2021.03.30 |
[ASP.NET Core Web API] CORS (0) | 2021.03.25 |
[ASP.NET Core Web API] Action Method - 요청 (2) | 2021.03.25 |
[ASP.NET Core Web API] 프로젝트및 Controller 생성 (0) | 2021.03.25 |