1. REST API의 정의

  • REST 기반으로 서비스 API를 구현한 것

 

2. API란?

  • 클라이언트가 정한대로 서버에게 요청(Request)을 보내면, 서버가 요구사항을 처리하여 응답(Response)을 반환합니다.
  • 클라이언트 - 서버 간의 약속입니다.

 

3. REST 란? (Representational State Transfer)

: 기본적인 웹 아키텍처로 일련의 제약 조건을 지정합니다

 

▶ 용어

  • 서버(Server) : 서비스 공급자. 클라이언트에게 서비스를 제공합니다.
  • 클라이언트(Client) : 서비스 소비자. 브라우저 또는 다른 시스템일 수 있습니다.
  • 리소스(Resource) : 모든 정보는 리소스가 될 수 있습니다.(사람, 이미지, 제품 등등)
  • 리프리젠테이션(Representation) : 리소스를 표현하는 구체적인 방법. 예를 들어 JSON, XML이나 HTML을 사용해 제품 리소스를 나타낼 수 있습니다.

▶ 제약조건 중 일부

  • 클라이언트-서버
  • 무상태(Stateless)
  • 통일된 인터페이스(Uniform Interface)
  • 캐시 가능 
  • 레이어 시스템 - 서비스 소비자와 공급자는 직접 연결되서는 안된다.
  • 리프리젠테이션을 통한 리소스 연산
  • HATEOAS - 소비자는 하나의 고정 서비스 URL만을 알아야한다.

 

 

  • 주소에 명사, 요청 방식에 동사를 사용함으로써 의도를 명확히 드러냄을 의미합니다. 
  • 동사는 CRUD를 지칭합니다.
    • Create : 생성(POST)
      Read : 조회(GET)
      Update : 수정(PUT)
      Delete : 삭제(DELETE)
      HEAD: header 정보 조회(HEAD)
  • A에 대해 생성(POST)/조회(GET)/수정(PUT)/삭제(DELETE) 요청을 하는 것이죠.
  • 즉, HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미합니다.

    • 예시
      • GET /courses → 강의 전체 목록 조회 요청
      • GET /courses/1 → ID가 1번인 녀석 조회 요청
      • POST /courses → 강의 생성 요청
      • PUT /courses/3 → ID가 3번인 녀석 수정 요청
      • DELETE /courses/2 → ID 2번인 녀석 삭제 요청
    • 주의사항
      • 주소에 들어가는 명사들은 복수형을 사용합니다.
        • /course -> /courses
      • 주소에 동사는 가급적 사용하지 않습니다.
        • /accounts/edit -> PUT/courses

 

 

 

4. HTTP 응답 상태 코드 

클라이언트가 API를 통해 서버에 요청을 제기할 때 클라이언트는 실패, 통과 또는 요청이 잘못되었는지에 여부에 대한 피드백을 알야 한다.

HTTP 상태 코드는 다양한 시나리오에서 다양한 설명이 있는 표준화된 코드의 묶음

서버는 항상 올바른 상태 코드를 반환해야 한다.

 

자주 사용되는 상태 코드 

  • 200 OK:  요청이 성공했고 응답 내용이 적절하게 클라이언트에 반환됨
  • 201 Created:  요청이 성공했고 새 리소스가 생성되었음
  • 400 잘못된 요청:  요청의 잘못된 구문으로 인해 서버가 요청을 처리하지 못했음 
    클라이언트는 요청을 수정한 후 다시 시도할 수 있다.
  • 401 Unauthorized: 리소스에 인증이 필요함을 나타냄
    클라이언트는 적절한 인증으로 다시 시도할 수 있다.
  • 403 Forbidden:  요청이 유효하더라도 서버가 요청에 대한 응답을 거부하고 있음을 나타냄 
    요청이 HEAD 메소드가 아닌 경우 이유는 본문 내용에 나열됨
  • 404 Not Found:  요청에 지정된 위치에서 요청된 리소스를 찾을 수 없음을 나타냄
  • 500 내부 서버 오류:  일반 오류 메시지를 나타내며 서버에 예기치 않은 오류가 발생했으며 요청을 이행할 수 없음을 알려줌

 

5. 검색, 정렬, 필터링 및 페이지 매김

검색, 정렬, 필터링 및 페이지 매김을 위해 새 REST API를 만들 필요가 없다. 기존 GET REST API에서 이러한 작업을 지원할 수 있으며 GET REST API로 쿼리 매개변수를 추가하기만 하면 됨 

 

예를 들어, 

  • 정렬 : GET /companies?sort=rankasc 로 작성하여 회사 순위별 오름차순 정렬 요청
  • 필터링 : GET /companies?category=banking&location=india로 작성하여 회사 범주가 은행이고 위치가 인도인 회사 목록 데이터를 필터링
  • 검색 : GET /companies?search=Digital로 작성하여 회사 데이터 중 'Digital'에 대한 검색 요청
  • 페이징 : GET /companies?page=23로 작성하여 23번째 페이지 데이터를 요청

 

 

======

2022-06-25 추가

참고하면 좋을 블로그 : https://sanghaklee.tistory.com/57

'프로그래밍 > SpringBoot' 카테고리의 다른 글

JPA 아키텍처  (0) 2022.05.22
REST API - GET/POST/PUT/DELETE - Controller  (0) 2022.05.22
DTO 설정 (DAO/DTO/VO 개념)  (0) 2022.05.22
Lombok  (0) 2022.05.22
JPA (3) - Create, Read, Update, Delete - Service  (0) 2022.05.22

+ Recent posts