오늘 뭐했냐/개발에 대한 주저리

23.10.06 REST API

스스로에게 2023. 10. 11. 16:28

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을 적용하는 것을 의미한다.

*CRUD Operation:  "Create, Read, Update, Delete"의 첫 글자를 따서 만든 약어로, 대부분의 컴퓨터 소프트웨어에서 데이터와 관련된 네 가지 기본 연산을 의미한다.

 

구성요소 : 

  1. 자원 (Resource):
    • REST는 모든 것을 "자원"으로 간주한다.
    • 자원은 URL (Uniform Resource Locator)로 식별된다. 

  2. HTTP 메서드 (Methods):
    • CRUD 연산과 관련된 기본적인 HTTP 메서드를 사용하여 자원에 대한 동작을 나타낸다.
      • GET: 자원을 읽음 (Read).
      • POST: 새로운 자원을 생성 (Create).
      • PUT or PATCH: 자원을 수정/업데이트 (Update).
      • DELETE: 자원을 삭제 (Delete).

  3. 표현 (Representation):
    • 클라이언트와 서버 간에 데이터 교환 시 자원의 상태를 나타내는 방법이다.
    • JSON, XML 등의 형식을 사용하여 데이터를 표현한다.

API

"Application Programming Interface"의 약자로, 다른 소프트웨어 애플리케이션들이 서로 소통하거나 상호작용할 수 있게 만드는 규약, 프로토콜, 도구 및 함수의 집합이다.

 

즉, REST API란 자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 것으로 소통하거나 상호작용하는 규약이다.

 

특징

  1. Stateless (무상태성):
    • 각 요청은 모든 정보를 포함해야 합니다. 즉, 서버는 클라이언트의 상태 정보를 저장하거나 이전 요청에 의존하지 않는다.
  2. Client-Server (클라이언트-서버 구조):
    • 클라이언트와 서버는 독립적으로 운영되며, 각각의 개발과 확장이 가능하다.
  3. Cacheable (캐시 가능):
    • 서버 응답은 캐시할 수 있으며, 이를 통해 성능을 향상시킬 수 있다.
  4. Layered System (계층화된 시스템):
    • 시스템 구성요소는 계층화 될 수 있으며, 각 계층은 독립적으로 작동한다.
  5. Uniform Interface (일관된 인터페이스):
    • REST는 일관된 인터페이스를 제공하여 각 서비스의 상호작용을 단순화하고 분리한다. 이 원칙은 다양한 하위 원칙들로 구성된다. (예: 자원 식별, 메시지 자체 설명성, 상태 코드 사용 등).

 

RESTful API란?

REST 원칙을 따르는 API를 의미한다.  따라서 다음과 같은 특성이 있다.

  1. 기본적으로 HTTP 프로토콜을 사용.
  2. 자원은 URI로 식별.
  3. HTTP 메서드를 활용하여 CRUD 연산을 수행.
  4. 메시지 포맷으로는 주로 JSON 또는 XML을 사용.
  5. 무상태성 및 클라이언트-서버 구조.

 

솔직히 여기에서 너무 잘 정리 해주셨다.

잘 정리된 블로그