REST API란

김승준·2021년 9월 7일
0

REST API 설계

목록 보기
1/1

REST란?

HTTP의 저자인 로이 필딩이 HTTP가 제대로 사용되지 못하는 것을 안타까워하며 웹의 장점을 최대한 살릴수 있도록 REST 아키텍처를 발표했다.

Representational State Transfer 의 약자로 HTTP 프로토콜을 사용하여 API를 작성할때 사용하는 아키텍처 스타일을 말한다.
아키텍처 스타일이라는 것은 그저 가이드라인일뿐, 이것의 구현 여부는 개발자에게 달려있다.
REST의 기본 원칙을 성실히 지킨 서비스 디자인을 “RESTful”이라고 표현한다.

즉, REST의 아키텍처 스타일을 제대로 이해하지 못하면 개발자의 이해도나 숙련도에 따라 API가 REST하다는 것이 다를 수 있다는 것을 의미한다. 그렇기때문에 REST한 설계를 하고 REST API를 작성하기 위해선 연습이 필요하다.

그렇다면 API를 Restfull하게 작성한다는 것은 무엇을 의미하는 것일까?

REST의 구성

  • 자원(Resource): HTTP URI
1) https://comic.naver.com/webtoon/weekday
2) https://comic.naver.com/webtoon/weekdayList?week=mon
3) https://comic.naver.com/webtoon/detail?titleId=758037&no=45&weekday=mon

1)은 네이버의 웹툰에서 요일별, 작가별, 연도별 등의 카테고리중 요일별 웹툰전체를 가져온다.
2)는 웹툰에서 요일별 중 월요일 웹툰을 가져온다.
3)은 웹툰에서 titleId가 758037번이고 45화이고 요일은 월요일인 웹툰을 가져온다.
이처럼 원하는 Resource를 URI로 명시하고 서버는 이에 해당하는 resource를 보내준다.

  • 행위(Verb): HTTP Method (GET, POST, PUT, DELETE ...)
    참고: https://developer.mozilla.org/ko/docs/Web/HTTP/Methods
    HTTP Method를 통해 자원에 대한 CURD를 할 수 있다.
    URI는 자원을 표현하는데 집중하고 그에 대한 행위에 대한 정의는 HTTP Method를 통해 하는 것이 REST API의 설계의 기본이다.
    1) GET: GET을 통해 해당 리소스를 조회한다.
    2) POST: POST를 통해 해당 리소스를 생성한다.
    3) PUT: PUT을 통해 해당 리소스를 수정한다.
    4) DELETE: DELETE를 통해 해당 리소스를 삭제한다.

  • 표현(Representations): HTTP Message Pay Load
    REST에서 자원은 JSON, XML, TEXT, RSS 등 여러 형태의 Representation으로 나타내어 질 수 있다.

REST의 특징

  1. 일관된 인터페이스 (Uniform interface)
    HTTP를 사용하는 환경이라면 플랫폼/언어/기술(ios, android, window, jsp ...)에 종속되지 않고, URI대한 요청을 통일되고, 한정적으로 수행하는 아키텍처 스타일을 의미한다.

  2. 무상태성 (Stateless)
    HTTP를 사용하기 때문에 REST는 상태정보를 저장하지 않는다. 요청에 대한 정보를 저장하지 않고 별개의 요청으로 처리한다.
    클라이언트의 context가 서버에 저장되어서는 안 된다.

  3. 캐시 (Cacheable)
    HTTP라는 웹표준을 사용하기 때문에, HTTP가 가진 캐싱 기능이 적용 가능하다. 클라이언트는 응답을 캐싱할 수 있어야 한다.
    HTTP 프로토콜 표준에서 사용하는 Last-Modified태그나 E-Tag를 이용하면 캐싱 구현이 가능하다.

  4. 자체 표현 구조 (Self-descriptiveness)
    REST API 메시지만 보고도 이를 쉽게 이해 할 수 있는 자체 표현 구조로 되어 있다.

  5. Client - Server 구조
    자원이 있는 쪽이 Server, 자원을 요청하는 쪽이 Client가 된다.
    서버는 API를 제공하고, 클라이언트는 유저에 대한 처리를 전담하는 구조를 가지기 때문에 서버와 클라이언트의 역할을 분명하게 구분할 수 있다.

  6. 계층형 구조
    Client는 REST API Server만 호출한다. REST Server는 다중 계층으로 구성될 수 있다.
    API Server는 순수 비즈니스 로직을 수행하고 그 앞단에 보안, 로드밸런싱, 암호화, 사용자 인증 등을 추가하여 구조상의 유연성을 줄 수 있다. 또한 로드밸런싱, 공유 캐시 등을 통해 확장성과 보안성을 향상시킬 수 있다.
    PROXY, 게이트웨이 같은 네트워크 기반의 중간 매체를 사용할 수 있다.

2021.09.07 김승준

오늘도 하나 배웠다.
모르는걸 부끄러워말자.
배울때 정확하고 깊게 알고 가자.
작은 것 하나하나가 모여서 거대해질때까지.

profile
매일 발전하는 사람

0개의 댓글