REST API

llama·2022년 3월 25일
3

CS

목록 보기
1/6
📌  여러 글을 참고하여 REST API 공부한것을 간략하게 정리해봤습니다.

REST API (Representational State Transfer)

HTTP Method + URI(Resource)를 이용하여 Endpoint를 만드는 REST Architecture를 따르는 API다.

  • REST란, 웹에 존재하는 모든 리소스에 고유한 URI를 부여해서 활용하는 것으로 URI에 대한 행위를 HTTP Method로 정의하는 방식이다.
  • URI에 Request를 전송하면 URI마다 전달받은 HTTP Method에 해당하는 포맷의 리소스를 Response로 보내준다.
  • HTTP URI(Uniform Resource Identifier)를 통해 자원을 명시하고, HTTP Method를 통해 자원에 대한 CRUD Operation을 적용하는것을 의미한다.
    • CRUD Operation
      • POST : Creacte
      • GET : Read
      • PUT : Update
      • DELETE : Delete
      • HEAD : Header 정보 조회

RESTful Architecture의 가장 중요한 두가지 항목

  1. URI는 명사로 리소스를 표현해야한다.
  2. 리소스에 대한 행위는 HTTP Method로 표현해야한다.

Endpoint

  • HTTP Method + URI로 API하나를 가리키는 고유한것을 Endpoint라고 한다.
  • HTTP Method마다 같은 URI라도 다른 처리를 해줘야 하는데 이것을 구별하게 해주는 항목이 Endpoint다.
    => API마다 보통 하나의 역할만 한다.

REST 구성

Resource (자원) : URI (Uniform Resource Identifier)

Verb (행위) : HTTP Method 4가지

  • GET - Read
  • POST - Create
  • PUT - Update
  • DELETE - Delete

Representation of Resource (표현)

  • Server에서 보내는 Response는 JSON, XML, TEXT, RSS등 여러 형태로 표현할 수 있다.
  • JSON 혹은 XML을 통하여 데이터를 주고 받는것이 가장 일반적이다.

REST 특징

  1. Server - Client 구조
    • 두 영역으로 분리하여 서버가 처리할 부분이 줄어들어 확장하기가 쉬워진다.
    • Client가 사용자 인증이나 Context등을 관리할 수 있기 때문에 서로의 의존성이 줄어든다.
    • 리소스가 있는 쪽이 Server, 요청하는 쪽이 Client이다.

  1. Stateless (무상태)
    • HTTP 프로토콜이 Stateless Protocol이므로 REST역시 무상태성을 가지는 것이다.
    • Client의 Context를 서버에 저장하지 않는다.
    • 각각의 요청을 별개로 인식하여 처리한다.

  1. Cacheable (캐시 처리 가능)
    • 웹표준 HTTP를 그대로 사용하므로 HTTP가 가지고 있는 캐싱 기능 등 웹에서 사용하는 기존의 인프라를 그대로 활용가능하다.
    • HTTP 프로토콜 표준에서 사용하는 Last-Modified 태그나 E-Tag를 이용하면 캐싱 구현이 가능하다.
      • Last-Modified Tag
        • 엔터티가 마지막으로 변경된 시각에 대한 정보를 제공한다.
      • E-Tag
        • Message에 담겨있는 엔터티를 위한 엔터티 태그를 제공하고, 이를 활용하여 리소스를 식별할 수 있다.
    • 캐싱된 캐시를 가진 중간 Proxy Server에 응답이 가므로 REST Server에 Transaction이 발생하지 않아서 응답시간, 성능, 서버의 리소스 이용률을 향상시킬 수 있다.
      • Transaction이란, 쪼개질 수 없는 업무처리의 단위이고 중간에 한번이라도 에러가 발생하면 모든 작업을 원상태로 되돌린다.
    • 웹 캐시란, 자주 쓰이는 문서의 사본을 자동으로 보관하는 HTTP장치로 웹 요청이 Proxy Server에 도착했을때 캐싱된 로컬 사본이 존재한다면 서버가 아닌 캐시로 부터 문서가 제공된다.
      • Cache Proxy Server가 있으면 최초의 Client를 제외한 Clients는 Proxy Server에서 정보를 받아 올 수 있다.


  1. Layered System (계층화)
    • Client는 REST Server만 호출하는데, 실제로는 어느 서버와 직접 통신하는지 알 수 없다.
    • REST Server는 보안, 로드밸런싱, 암호화, 사용자 인증 등을 위한 계층을 추가하여 다중 계층으로 구성될 수 있다.
    • Proxy, Gateway같은 네트워크 기반의 중간 매체를 사용할 수 있다.

  1. Uniform Interface
    • HTTP Method + URI로 통일되고 일정학 제약을 가진 인터페이스를 가진다.

  1. Code On Demand (Optional)
    • REST Server에서 스크립트를 받아서 Client에서 실행한다.

  1. Self Descriptive (자체 표현 구조)
    • REST Message만 보고 어떤 리소스인지 이해할 수 있다.

Resource

  • 각 각의 데이터를 리소스라고 부르며, 리소스는 고유의 ID를 가지고 있다.
    • 아래에 예시를 만들어 봤습니다.
      • GET + stores >>> Store 리스트를 받을 수 있다.
      • GET + stores/:id >>> 입력받은 id의 Store하나만 받을 수 있다.
      • PUT + stores/:id >>> 입력받은 id의 리소스를 수정할 수 있다.


Reference

https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html
https://brainbackdoor.tistory.com/53

profile
요리사에서 프론트엔드 개발자를 준비하는중 입니다.

0개의 댓글

관련 채용 정보