[네트워크] REST API

임승민·2023년 3월 18일
0

네트워크

목록 보기
4/9
post-thumbnail

REST란?

RESTRepresentational State Transfer의 약자로 웹 상에서의 통신 체계에 있어 범용적인 스타일을 규정한 아키텍쳐로 자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다.

구체적인 개념은 HTTP URI를 통해 자원을 명시하고, HTTP Method를 통해 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.

CRUD OperationHTTP Method역할Payload (전송되는 데이터)
Create (생성)POST리소스를 생성O
Read (조회)GET모든/특정 리소스를 조회X
Update (수정)PUT or PATCH리소스의 전체를 교체 / 일부를 수정O
Delete (삭제)DELETE모든/특정 리소스를 삭제X

REST 구성요소

구성 요소내용표현 방법
자원 Resource자원HTTP URI
행위 Verb자원에 대한 행위HTTP Method
표현 Representation자원에 대한 행위의 내용HTTP Message Payload

REST 특징

  1. Server-Client(서버-클라이언트 구조)
    • 자원이 있는 쪽이 Server, 자원을 요청하는 쪽이 Client가 된다.
  2. Stateless(무상태)
    • HTTP는 Stateless 프로토콜이라 REST도 Stateless를 갖는다. 따라서 클라이언트의 Context를 서버에 저장하지 않는다.
    • 장점: 서비스 자유도 상승, 서버에서 불필요한 정보를 관리하지 않아 서비스 구현이 단순해진다.
    • 단점: 서버가 세션, 쿠키 정보를 별도로 저장/관리하지 않아 클라이언트에서 상태 정보를 항상 전송해 통신 비용이 높아진다.
  3. Cacheable(캐시 처리 가능)
    • 웹 표준 HTTP 프로토콜을 그대로 사용해 기존의 인프라를 활용할 수 있다. 따라서 HTTP의 특징인 캐싱 기능을 사용할 수 있다.
  4. Layered System(계층화)
    • REST 서버는 다중 계층으로 구성될 수 있으며, API Server는 순수 비즈니스 로직을 수행하고 그 앞단에 보안, 로드밸런싱, 암호화, 사용자 인증 등을 추가하여 구조상의 유연성을 줄 수 있다.
  5. Uniform Interface(인터페이스 일관성)
    • URI로 지정한 Resource의 조작을 통일되고 한정적인 인터페이스로 수행한다.
    • HTTP 표준에 따르는 모든 플랫폼에서 사용이 가능하다.

REST의 장단점

장점

  • HTTP 프로토콜의 인프라를 그대로 사용해 별도의 인프라를 구출할 필요가 없다.
  • HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능하다.
  • REST API 메시지가 의도하는 바를 명확하게 나타낸다.
  • 서버, 클라이언트 역할을 명확히 분리한다.

단점

  • 설계 가이드라 표준이 존재하지 않는다.
  • HTTP Method 형태가 제한적이다.

REST API

+ API: 프로그램 간 상호작용을 위한 인터페이스를 의미한다.

REST를 기반으로 구현한 서비스 API를 말한다. 참고로 OpenAPI 대부분은 REST API를 제공한다.

REST API 설계 규칙

  1. URI는 대문자대신 소문자를 사용한다.
  2. 자원에 대한 행위는 HTTP Method로 표현한다.
  • URI에 HTTP Method 또는 행위에 대한 동사 표현이 들어가선 안된다.
❌[DELETE] /delete/users/1 ⭕[DELETE] /users/1 
❌[GET] /users/show/1      ⭕[GET] /users/1     
  1. 슬래시(/)로 계층 관계를 나타내고 URI 마지막엔 슬래시를 포함하지 않는다.
❌ http://forest.com/users/ 
⭕ http://forest.com/users
  1. 언더바(_)대신 하이픈(-)을 사용한다.
  • URI가 길어지면 하이픈(-)으로 구분해 가독성을 높힌다.
  • 폰트에 따라 언더바(_)는 부분적으로 가려질 수 있다.
/users/1/ordered_items
⭕ /users/1/ordered-items
  1. 파일 확장자는 URI에 포함하지 않는다.
  • Accept header를 사용한다.
/users/1/profile-photo.jpg
⭕ /users/1/profile-photo HTTP/1.1 Host: forest.com Accept: image/jpg

RESTful

REST라는 아키텍처를 구현하는 웹 서비스를 나타내는 용어로 REST API를 제공하는 웹 서비스를 RESTful하다고 할 수 있다. RESTful의 목적은 이해하기 쉽고 사용하기 쉬운 REST API를 만드는 것이다.

또한 RESTful한 API는 일관적인 컨벤션을 통한 API의 이해도 및 호환성을 높이는 것이 목적이라 성능이 중요한 상황에선 굳이 사용하지 않는다.

RESTful하지 못한 경우

CRUD 기능을 모두 POST로 처리 하는 API, URI 규칙을 지키지 않은 API는 REST API를 사용했어도 RESTful 하지 못한 경우이다. 또한 잘 설계된 REST API는 요청에 대한 응답의 상태코드를 잘 전달하는 것까지 포함된다.


References

https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html
https://khj93.tistory.com/entry/네트워크-REST-API란-REST-RESTful이란
https://poiemaweb.com/js-rest-api

0개의 댓글