REST API 를 이용해 목록 반환하는 방법입니다.
ASP.NET Core를 사용하여 REST API 만들기
ASP.NET 코어를 사용하여 REST API를 만들려면 기본 제공 ControllerBase 클래스에서 파생되는 컨트롤러 클래스를 만듭니다. ControllerBase 는 Microsoft.AspNetCore.Mvc 네임스페이스 에 있습니다 .
Controller vs ControllerBase
REST API를 생성하는 경우 Controller 클래스 ControllerBase 에서 파생되도록 합니다 . Controller는 ControllerBase에서 파생되며 MVC 기능이 추가됩니다.
따라서 MVC 웹 애플리케이션을 구축하는 경우 Controller 클래스에서 파생되는 컨트롤러를 생성하십시오. 반면 Web API를 생성하는 경우 ControllerBase 클래스에서 파생되는 controller class를 생성합니다.
즉, Controller는 MVC 웹 애플리케이션용이고 ControllerBase는 MVC Web API용입니다.
웹 애플리케이션과 웹 API 모두에 대해 컨트롤러를 사용하려는 경우 Controller 클래스에서 파생합니다.
ASP.NET Core API 컨트롤러 예제
- EmployeesController 는 API 컨트롤러이므로 [ApiController] 속성 으로 decorate 합니다.
- 이름에서 알 수 있듯이 [Route] 속성은 경로를 지정합니다. 대괄호 안의 [controller] 라는 단어는 EmployeesController를 가져오기 위해 URL에서 Controller의 이름을 사용합니다.
- IEmployeeRepository 는 표준 생성자 주입을 사용하여 컨트롤러 클래스에 주입됩니다. 기본 SQL Server 데이터베이스에서 직원 데이터를 검색하는 것은 이 IEmployeeRepository 입니다 . 여기선 이 리포지토리 클래스를 구현했습니다.
- [HttpGet] 속성은 이 메서드가 http GET 요청에 응답 함을 의미합니다.
- 작업 <ActionResult> 의 반환 유형을 사용하면 직원 목록과 함께 상태 코드 200 (OK)를 반환하거나 데이터베이스에서 데이터를 검색하는 서버 오류가 있는 경우 상태 코드 500 을 반환할 수 있습니다.
using EmployeeManagement.Api.Models; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using System; using System.Threading.Tasks; namespace EmployeeManagement.Api.Controllers { [Route("api/[controller]")] [ApiController] public class EmployeesController : ControllerBase { private readonly IEmployeeRepository employeeRepository; public EmployeesController(IEmployeeRepository employeeRepository) { this.employeeRepository = employeeRepository; } [HttpGet] public async Task<ActionResult> GetEmployees() { try { return Ok(await employeeRepository.GetEmployees()); } catch (Exception) { return StatusCode(StatusCodes.Status500InternalServerError, "Error retrieving data from the database"); } } } }
HTTP 상태 코드
호출자, 즉 API 클라이언트에게 요청 상태를 알려줍니다. 일반적인 상태 코드 중 일부는 200/정상, 404/찾을 수 없음, 204/내용 없음입니다. HTTP 상태 코드의 전체 목록과 의미를 보려면 https://en.wikipedia.org/wiki/List_of_HTTP_status_codes를 참고하세요 .
ASP.NET Core는 HTTP 상태 코드를 반환하기 위해 다음과 같은 상태 코드를 제공합니다.