[네트워크] TIL 6 - REST API

뽀또대장·2024년 11월 17일

네트워크

목록 보기
6/9

REST API

개념

  • REST를 기반으로 만들어진 API를 의미

REST(Representational State Transfer)?

개념

HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE, PATCH 등)를 통해 해당 자원(URI)에 대한 CRUD Operation을 적용하는 것을 의미

CRUD Operation이란

CRUD는 대부분의 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능인 Create(생성), Read(읽기), Update(갱신), Delete(삭제)를 묶어서 일컫는 말

  • REST에서의 CRUD Operation 동작 예시
    • Create : 데이터 생성(POST)
    • Read : 데이터 조회(GET)
    • Update : 데이터 수정(PUT, PATCH)
    • Delete : 데이터 삭제(DELETE)

구성요소

  • 자원(Resource) : HTTP URI
  • 자원에 대한 행위(Verb) : HTTP Method
  • 자원에 대한 행위의 내용 (Representations) : HTTP Message Pay Load

특징

  • Server-Client(서버-클라이언트 구조)
  • Stateless(무상태)
  • Cacheable(캐시 처리 가능)
  • Layered System(계층화)
  • Uniform Interface(인터페이스 일관성)

장점

  • HTTP 프로토콜 인프라 사용
    • REST API는 HTTP를 기반으로 설계되므로 별도의 통신 프로토콜을 구축할 필요가 없다
  • HTTP 프로토콜 인프라 사용
    • HTTP 프로토콜의 표준을 활용해 다양한 기능(캐싱, 보안, 상태 코드 등)을 지원
  • 의도 명확성
    • REST API는 자원의 상태와 작업을 명확히 표현(예: GET, POST, PUT, DELETE)하므로 API의 의도를 쉽게 파악할 수 있다
  • 문제 최소화
    • REST의 설계 원칙은 여러 서비스 간 통신에서 발생하는 설계 문제를 최소화
  • 역할 분리
    • 클라이언트와 서버 간의 책임을 명확히 나눌 수 있다.
  • Hypermedia API 준수 및 범용성 보장
    • REST의 HATEOAS 원칙을 충실히 따를 경우, 클라이언트가 서버의 상태 변화에 동적으로 적응
    • "Hypermedia API"는 구현 선택 사항이며, 모든 REST API가 이를 따르는 것은 아니다.

단점

  • 표준 정의 필요성
    • REST API 자체는 명확한 공식 표준이 아니므로, 구현 시 설계 원칙을 따르는 표준화 작업이 필요
  • HTTP Method 제약
    • HTTP Methods(GET, POST, PUT, DELETE 등)의 종류가 한정적이며, 이를 초과하는 동작을 정의하려면 비표준적인 방식(예: URI에 액션 포함)을 사용
  • 헤더 정보 처리
    • 브라우저 기반 테스트의 경우, 헤더 정보를 다루는 작업이 추가되어 전문성이 필요
    • 대부분 REST API 테스트 도구(Postman, curl 등)를 사용하므로 크게 제한 사항이 되지 않는다
  • 구형 브라우저 호환성 문제
    • 구형 브라우저에서 일부 HTTP Method(PUT, DELETE 등)가 제한
    • 최근에는 대부분의 브라우저가 지원하므로, 익스플로러에 국한된 문제

REST API(Representational State Transfer API)?

개념

  • REST의 원리를 따르는 API를 의미

REST API 설계 예시

  1. URI는 동사보다는 명사를, 대문자보다는 소문자를 사용하여야 한다.
Bad Example http://khj93.com/Running/
Good Example  http://khj93.com/run/ 
  1. 마지막에 슬래시 (/)를 포함하지 않는다.
Bad Example http://khj93.com/test/  
Good Example  http://khj93.com/test
  1. 언더바 대신 하이폰을 사용한다.
Bad Example http://khj93.com/test_blog
Good Example  http://khj93.com/test-blog 
  1. 파일확장자는 URI에 포함하지 않는다.
Bad Example http://khj93.com/photo.jpg  
Good Example  http://khj93.com/photo  
  1. 행위를 포함하지 않는다.
Bad Example http://khj93.com/delete-post/1  
Good Example  http://khj93.com/post/1  

RESTful 하다는 것?

  • RESTFUL이란 REST의 원리를 따르는 시스템을 의미
  • 하지만 REST를 사용했다 하여 모두가 RESTful 한 것은 아님

REST API의 설계 규칙을 올바르게 지킨 시스템을 RESTful하다 말할 수 있다. 모든 CRUD 기능을 POST로 처리 하는 API, URI 규칙을 올바르게 지키지 않은 API는 REST API의 설계 규칙을 올바르게 지키지 못한 시스템은 REST API를 사용하였지만 RESTful 하지 못한 시스템이라고 할 수 있다.

참고: 블로그

profile
개발 공부하기

0개의 댓글