REST API 를 이용해 Id 기준 데이터 조회하는 방법입니다.
ID로 특정 직원을 검색하려고 합니다.
REST API URL
- URI /api/employees 에 대한 GET 요청 은 직원 목록을 반환합니다.
- URI /api/employees/1 에 대한 GET 요청 은 ID가 1인 Employee를 반환해야 합니다.
ASP.NET Core REST API ID로 가져오기
using EmployeeManagement.Api.Models; using EmployeeManagement.Models; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using System; using System.Collections.Generic; using System.Linq; 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<IEnumerable<Employee>>> GetEmployees() { try { return (await employeeRepository.GetEmployees()).ToList(); } catch (Exception) { return StatusCode(StatusCodes.Status500InternalServerError, "Error retrieving data from the database"); } } [HttpGet("{id:int}")] public async Task<ActionResult<Employee>> GetEmployee(int id) { try { var result = await employeeRepository.GetEmployee(id); if (result == null) return NotFound(); return result; } catch (Exception) { return StatusCode(StatusCodes.Status500InternalServerError, "Error retrieving data from the database"); } } } }
HttpGet 속성 으로 장식된 메서드는 해당 메서드가 HTTP GET 요청을 통해 처리가 됨을 의미합니다. GetEmployees() 및 GetEmployee()는 모두 HttpGet 속성 으로 decorate 됩니다.
차이점은 GetEmployee() 메서드의 HttpGet 특성에 경로 템플릿이 있다는 것입니다.
직원의 ID 가 URL(/api/employees) 에 추가됩니다 .
[HttpGet("{id:int}")] public async Task<ActionResult<Employee>> GetEmployee(int id)
- 따라서 URL이 /api/employees 이면 GetEmployees() 메서드 에 의해 처리됩니다 . URL이 /api/employees/1 이면 GetEmployee(int id) 메서드 에 의해 처리됩니다 .
- URL의 직원 ID 값은 GetEmployee(int id) 메서드 의 id 매개 변수에 자동으로 매핑됩니다 .
- id 경로 매개 변수 에 int 경로 제약 조건을 사용하므로 URL의 id 값은 값이 정수인 경우에만 메서드 매개 변수에 매핑됩니다.
- 그런 다음 직원 ID는 데이터베이스에서 각 직원을 검색하는 employeeRepository.GetEmployee(id) 메서드로 전달됩니다.
- 직원이 발견되면 ASP.NET Core는 자동으로 직원 개체를 JSON으로 직렬화하고 응답 본문에 씁니다. 이 응답 본문은 http 상태 코드 200 (OK) 와 함께 클라이언트로 반환됩니다. 직원을 찾을 수 없으면 http 상태 코드 404 (NotFound) 가 반환됩니다.