REST API

박우현 (Joshua)·2023년 7월 21일
0

📋 REST API란?

REST API란 무엇을 뜻 하는가?
그 전에 일단 REST란, Representational State Transfer의 약자로 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미한다.
세부적으로,
1. HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고,
2. HTTP Method(POST, GET, PUT, DELETE, PATCH 등)를 통해
3. 해당 자원(URI)에 대한 CRUD Operation을 적용하는 것을 의미한다.

📍REST의 장단점

  • 장점
    HTTP 프로토콜의 인프라를 그대로 사용하므로 REST API 사용을 위한 별도의 인프라를 구출할 필요가 없다.
    HTTP 프로토콜의 표준을 최대한 활용하여 여러 추가적인 장점을 함께 가져갈 수 있게 해 준다.
    HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능하다.
    REST API 메시지가 의도하는 바를 명확하게 나타내므로 의도하는 바를 쉽게 파악할 수 있다.
    서버와 클라이언트의 역할을 명확하게 분리한다.
  • 단점
    표준이 존재하지 않아 정의가 필요하다.
    HTTP Method 형태가 제한적이다. (POST, GET, PUT, DELETE)
    구형 브라우저에서 호환이 되지 않아 지원해주지 못하는 동작이 많다. (PUT, DELETE)

📍REST API란

  • API : 애플리케이션이나 디바이스가 서로 간에 연결하여 통신할 수 있는 방법을 정의하는 규칙 세트
  • REST API : REST의 원리를 따르는 API를 의미한다.
    REST는 특정 기술이나 플랫폼에 얽매이거나 API를 빌드하는 방법을 정확하게 지정하지 않지만, 6가지 아키텍처 제약 조건을 사용한다.

📍REST API 6가지 아키텍쳐 제약조건

  1. 클라이언트 서버
    REST API는 클라이언트-서버 아키텍처 스타일을 구현한다. 클라이언트가 리소스에 대한 요청을 보내고 있으며 데이터 저장소와 연결되어 있지 않다. 데이터 저장소는 서버 내부에 남아 있으며, 서버는 사용자 인터페이스와의 통신에 관여하지 않는다. 클라이언트와 서버는 상호 의존적으로 발전하고 이 요소는 REST를 훨씬 더 유연하고 확장 가능하게 만든다.
  2. 균일한 인터페이스
    요청이 어디에서 오는지와 무관하게, 동일한 리소스에 대한 모든 API 요청은 동일하게 보여야 한다.
    균일한 인터페이스의 4가지 원칙
  • 자원 식별 : 요청된 리소스가 식별 가능하며 클라이언트에 전송된 표현과 분리되어야 한다.
  • 표현을 통한 자원 조작 : 클라이언트가 가지고 있는 리소스 표현에는 리소스를 삭제하거나 수정하는 데 필요한 데이터가 포함되며, 클라이언트는 서버(JSON 객체)가 수정, 제거 또는 추가해야 하는 표현을 보낸다.
  • 자기 설명 메시지 : 클라이언트에 반환되는 자기 기술적(self-descriptive) 메시지에 클라이언트가 정보를 어떻게 처리해야 할지 설명하는 정보가 충분히 포함되어야 한다.
  • 하이퍼텍스트/하이퍼미디어 사용 가능 : 클라이언트가 리소스에 액세스한 후 하이퍼링크를 사용해 현재 수행 가능한 기타 모든 작업을 찾을 수 있어야 한다.
  1. Stateless
    서버에 클라이언트에 대한 데이터가 포함되어 있지 않음을 의미한다. 요청 처리에 필요한 모든 정보가 요청에 포함되며, 클라이언트는 모든 세션 정보를 저장한다.
  2. 캐시 가능
    각 응답에는 캐시 가능 여부와 응답을 캐시할 수 있는 기간을 알려주는 정보가 있어야 한다. 캐싱 기능을 통하여, 서버측의 확장성 증가와 클라이언트측의 성능 향상을 동시에 얻을 수 있다.
  3. 계층 구조 아키텍처
    REST API는 엔드 애플리케이션 또는 중개자와 통신하는지 여부를 클라이언트나 서버가 알 수 없도록 설계되어야 한다.
  4. 코드 온디맨드(선택 사항)
    요청을 받으면 서버에서 클라이언트로 실행 가능한 코드를 전송하여 클라이언트 기능을 확장할 수 있는 기능이다.

📍RESTful API란?

  • RESTful은 일반적으로 REST라는 아키텍쳐를 구현하는 웹 서비스를 나타내기 위해 사용되는 용어이다.
    REST API를 제공하는 웹 서비스를 RESTful하다고 할 수 있다.
  • RESTful은 REST를 REST 답게 쓰기 위한 방법으로, 누군가가 공식적으로 발표한 것이 아니다.
    즉, REST 원리를 잘 따르는 시스템은 RESTful 용어로 지칭된다.
profile
매일 매일 성장하자

1개의 댓글

comment-user-thumbnail
2023년 7월 21일

좋은 글 잘 읽었습니다, 감사합니다.

답글 달기