REST API ( Representational State Transfer Application Programming Interface )

hyeonyohwan·2021년 4월 7일
0

API란?

  • 응용 프로그램에서 사용할 수 있도록, 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스이다.

REST란?

  • 웹에 존재하는 모든 자원(이미지, 동영상 등등)에 고유한 URI를 부여해 활용하는 것으로 자원을 정의하고 자원에 대한 주소를 지정하는 방법론이다.
  • 비슷한 말인 RESTful은 이런 형식을 따른 시스템이다.

REST 구성요소

  • 자원 ( Resource ) : URI - 모든 자원은 고유한 ID를 가지고 ID는 서버에 존재하고 클라이언트는 각 자원의 상태를 조작하기 위해 요청을 보낸다.

  • 자원에 대한 행위 ( Verb ) : HTTP Method - 클라이언트는 URI를 이용해 자원을 지정하고 자원을 조작하기 위해 Method를 사용한다. HTTP 프로토콜에서는 GET, POST, PUT, DELETE 같은 Method를 제공한다.

  • 자원에 대한 행위의 내용 ( Representations ) - 클라이언트가 서버로 요청을 보냈을 때 서버가 응답으로 보내주는 자원의 상태를 Representation이라고 한다. REST에서 하나의 자원은 JSON, XML, TEXT, RSS 등 여러 형태의 Representation으로 나타낼 수 있다.

보통 CRUD에서 조회는 GET, 등록은 POST, 수정은 PUT, 삭제는 DELETE를 이용한다.

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

REST 의 특징

  • 클라이언트 / 서버 구조 (Client-Server) - 자원이 있는 Server , 자원을 요청하는 Client의 구조를 가진다.
  • 무상태 (Stateless) - HTTP는 Stateless 프로토콜 이므로 REST 역시 무상태성을 가진다. 클라이언트의 Context 를 서버에 저장하지 않는다.
  • 캐시 처리 가능 (Cacheable) - 웹 표준 HTTP 프로토콜을 그대로 사용하므로 , 웹에서 사용하는 기존의 인프라를 그대로 활용 가능하다.
  • 계층화 - API 서버는 순수 비즈니스 로직을 수행하고 그 앞단에 사용자 인증 , 암호화 , 로드밸런싱 등을 하는 계층을 추가하여 구조상의 유연성을 줄 수 있다.
  • 인터페이스 일관성(Uniform Interface) - URI로 지정한 자원에 대한 조작을 통일되고 한정적인 인터페이스로 수행한다. HTTP 표준에만 따른다면 모든 플랫폼에 사용이 가능하다.
  • 자체 표현 구조 - 동사(Method) + 명사(URI) 로 이루어져있어 어떤 메서드에 무슨 행위를 하는지 알 수 있으며 REST API 자체가 매우 쉬워서 API 메세지 자체만 보고도 API를 이해할 수 있다

REST의 장단점

장점

  1. 쉬운 사용 - HTTP 프로토콜 인프라를 그대로 사용하므로 별도의 인프라를 구축할 필요가 없다.
  2. 클라이언트-서버 역할의 명확한 분리 - 클라이언트는 REST API를 통해 서버와 정보를 주고받는다. REST의 특징인 Stateless에 따라 서버는 클라이언트의 Context를 유지할 필요가 없다.
  3. 특정 데이터 표현을 사용가능 - REST API는 헤더 부분에 URI 처리 메소드를 명시하고 필요한 실제 데이터를 ‘body’에 표현할 수 있도록 분리시켰다. JSON , XML 등 원하는 Representation 언어로 사용 가능하다.

단점

  1. 메소드의 한계 - REST는 HTTP 메소드를 이용하여 URI를 표현한다. 이러한 표현은 쉬운 사용이 가능하다는 장점이 있지만 반대로 메소드 형태가 제한적인 단점이 있다.
  2. 표준이 없음 - REST는 설계 가이드 일 뿐이지 표준이 아니다. 명확한 표준이 없다.

PUT vs PATCH

PUT

  • 리소스의 모든 것을 업데이트 하기 때문에 보내지 않은 속성 값들에 대해서는 null 값으로 변경한다.

PATCH

  • 리소스의 일부를 업데이트 하기 때문에 요청에 포함된 부분만 변경된다.

참고 - https://ko.wikipedia.org/wiki/API // https://medium.com/@hckcksrl/rest%EB%9E%80-c602c3324196 // https://poiemaweb.com/js-rest-api // https://programmer93.tistory.com/39

profile
웹 프론트엔드 개발자입니다.

0개의 댓글