REST와 REST API

이원석·2022년 4월 1일
0

Network

목록 보기
5/7

1. REST


REST란 "Representational State Transfer(대표적인 상태 전달)" 의 약자로, 월드 와이드 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 개발 아키텍처 스타일입니다.

REST는 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용함으로써, 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일 입니다.

최근의 서버 프로그램은 다양한 브라우저와 안드로이폰, 아이폰과 같은 모바일 디바이스에서도 통신을 할 수 있어야 합니다.



아키텍처 스타일이란?

기존의 시스템이나 애플리케이션을 개발자가 아닌 다른 사람이 유지보수 해야하는 경우, 서로의 설계방식이 달라 코드를 분석하는데 많은 어려움이 따릅니다.

따라서 이를 해결하기 위해 많은 사람들 또는 신뢰있는 기고나에서 검증된 보편적인 통합 설계 방법의 양식들을 사용하는데 이것을 아키텍처 스타일 이라고 합니다.




[REST의 구성 요소]

어떤 자원에 대해 CRUD 연산을 수행하기 위해 HTTP URI(Resource)를 통해 GET, POST등의 HTTP 메서드(Method)를 사용하여 요청을 보내며, 요청을 위한 자원은 특정한 형태로 표현됩니다.


  1. 자원(Resource) - URI
    • 모든 자원(웹사이트의 이미지, 텍스트, DB 등) 에는 고유한 ID가 존재하고, 이 자원은 Server에 존재한다.
    • 자원을 구별하는 ID는 HTTP URI이다.
    • Client는 URI를 이용하여 자원을 지정하고, 해당 자원의 상태(정보)에 대한 조작을 Server에 요청한다.
  1. 행위(Verb) - HTTP Method
    • HTTP 프로토콜의 Method를 사용한다.
    • HTTP 프로토콜은 GET, POST, PUT, DELETE, PATCH 와 같은 메서드를 제공한다.
  1. 표현(Representation of Resource)
    • Client가 자원의 상태(정보)에 대한 조작을 요청하면 Server는 이에 대해 적절한 응답(Representation) 을 보낸다.
    • REST에서 하나의 자원은 JSON, XML, TEXT, RSS 등 여러 형태의 표현으로 나타날 수 있다.
    • 보통 JSON 혹은 XML을 통해 데이터를 주고받는다.



[REST 의 특징]

  1. Server-Client (서버 - 클라이언트 구조)

    • 자원을 요청하는 Client와 Server의 역활을 구분시킴으로써 서로간의 의존성을 줄인다.
  2. Stateless (무상태성)

    • Client의 context(쿠키, 세션) 을 서버에 저장하지 않는다.
    • Server는 각각의 요청을 별개의 것으로 인식하고 처리한다. 즉, 이전 요청이 다음 요청의 처리에 연관되어서는 안된다.
  3. Cacheable (캐리 처리 기능)

    • 웹 표즌 HTTP 프로토콜을 그대로 사용하므로 캐싱 기능도 적용할 수 있으며, 대량의 요청을 효율적으로 처리할 수 있다.
  4. Layer System (계층 구조)

  5. Uniform Interface (인터페이스 일관성)

    • 특정 언어나 기술에 종속되지 않으며 HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용 가능합니다. (느슨한 결함 형태)
  6. Self-Descriptiveness (자체 표현)

    • 요청 메시지만 보고도 쉽게 이해할 수 있는 자체 표현 구조로 되어있습니다.





2. REST API


API란?

API란 (Application Programming Interface)의 약자로, 응용 프로그램에서 사용할 수 있도록, 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻합니다.



REST API란?

REST의 특징을 기반으로 API를 구현한 것입니다. 최근 OpenAPI(누구나 사용할 수 있도록 공개된 API), 마이크로 서비스(하나의 큰 어플리케이션을 여러개의 작은 어플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍쳐) 등을 제공하는 기업 대부분은 REST API를 제공합니다.




[REST API 설계 기본 규칙]

  1. URI는 정보의 자원을 표현해야한다.

    • resource는 동사보다 명사를 사용하며, 영어 소문자 복수형을 사용하여 표현한다.

      	ex) GET /members/1
  2. 자원에 대한 행위는 HTTP Method(GET, PUT, POST, DELETE 등)으로 표현한다.

    • URI에 HTTP Method가 들어가면 안된다.

    • URI 행위에 대한 동사 표현이 들어가면 안된다.

      	ex) GET /members/show/1  ->  GET /members/1



[REST API 설계 규칙]

abc

RESTful이란..

결국 RESTful은 REST라는 아키텍처를 구현하는 웹 서비스를 말합니다. REST 원리를 따르는 시스템을 RESTful 이라고 합니다.

RESTful 의 목적은 이해하기 쉽고 사용하기 쉬운 REST API 를 만드는것이며 퍼포먼스가 중요한 상황에서는 굳이 RESTful API를 구현할 필요가 없습니다.

RESTful 하지 못한경우

  • CRUD 기능을 모두 POST로만 처리하는 API
  • Route에 resource, id 외의 정보가 들어가는 경우
      ex) GET /students/updateName
      





[참조문헌]
https://github.com/WeareSoft/tech-interview/blob/master/contents/network.md#dns
https://dev-coco.tistory.com/97
https://www.charlezz.com/?p=44767

0개의 댓글