REST API 를 이용해 Id 기준 데이터 조회하기

REST API 를 이용해 Id 기준 데이터 조회하는 방법입니다.
ID로 특정 직원을 검색하려고 합니다.

REST API URL

나머지 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) 가 반환됩니다.

답글 남기기