클리엘
CLIEL LAB
클리엘
전체 방문자
오늘
어제
  • 분류 전체보기 (514) N
    • Mobile (47)
      • Kotlin (47)
    • Web (84)
      • NestJS (9)
      • HTML5 & CSS3 (38)
      • Javascript (20)
      • TypeScript (6)
      • JQuery (11)
    • .NET (301) N
      • C# (84) N
      • ASP.NET (67)
      • Windows API for .NET (128)
    • Server (53)
      • SQL Server (10)
      • MariaDB (18)
      • Windows Server (6)
      • node.js (19)
    • System (12)
      • 작업LOG (12)
    • Review (11)
    • ETC (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 블로그 정리

인기 글

태그

  • NestJS
  • android
  • node.js
  • ASP.NET
  • 변수
  • LINQ
  • Windows API
  • HTML5
  • android studio
  • exception
  • JavaScript
  • .NET
  • asp.net core web api
  • c#
  • MariaDB
  • Entity Framework
  • jQuery
  • CSS3
  • asp.net core
  • Kotlin

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
클리엘

CLIEL LAB

[ASP.NET Core Web API] Action Method - 응답
.NET/ASP.NET

[ASP.NET Core Web API] Action Method - 응답

2021. 3. 26. 11:57
728x90

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-'형태를 추가하는 것이 관례입니다.

728x90
저작자표시 비영리 변경금지

'.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
    '.NET/ASP.NET' 카테고리의 다른 글
    • [ASP.NET Core Web API] 'IAsyncEnumerable Reader' reached the configured maximum size of the buffer when enumerating a value of type
    • [ASP.NET Core] IIS 호스팅
    • [ASP.NET Core Web API] CORS
    • [ASP.NET Core Web API] Action Method - 요청
    클리엘
    클리엘
    누구냐 넌?

    티스토리툴바