REST API

nyoung·2023년 6월 20일
2

cs

목록 보기
2/10
post-thumbnail

REST란?

REST는 Representational State Transfer의 약자로, 웹 서비스를 위한 소프트웨어 아키텍처 스타일이다. REST는 클라이언트와 서버 간의 통신을 위한 일련의 원칙과 제약 조건을 제시한다.

API란?

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

예를 들면, 날씨 정보 애플리케이션을 개발할때 특정 도시의 현재 날씨 정보가 필요하다. 이때, 외부 서비스에서 제공하는 날씨 정보를 사용하기 위해 API를 활용할 수 있다. 날씨 정보 요청을 위한 공개된 메뉴얼을 따라 날씨 정보를 요청할 수 있다.
(ex. "date:230619|place:seoul|which:temperature")
이처럼 소프트웨어 어플리케이션끼리 지정된 형식으로 요청, 명령을 받을 수 있는 수단을 API라고 한다.

그렇다면, REST API란?

REST API는 REST의 원칙을 따르는 API를 의미한다. RESTful API는 REST의 원칙을 준수하여 설계된 API를 말한다.(RESTful하다) REST API는 클라이언트와 서버 간의 통신을 위해 REST의 원칙을 따르며, 자원과 HTTP 메서드를 사용하여 상호작용한다.

카페 예시를 들어 REST API를 다시 살펴보자.

클라이언트 (주문자):
	이름: John
	주문한 메뉴: 아이스 커피
	주문 시간: 오후 2시
카페 (서버):
	주문을 받아 처리하는 역할을 담당.
REST API의 요청과 응답:
	클라이언트는 HTTP 프로토콜을 사용하여 아이스 커피 주문 요청을 서버에 보낸다.
	클라이언트가 주문하는 방식과 서버가 요청을 이해하는 방식 사이에는 규칙이 있다.
HTTP 메서드와 URI:
	클라이언트는 주문을 생성하기 위해 "POST" 메서드를 사용한다. 즉, 새로운 주문을 만든다.
	URI(Uniform Resource Identifier)는 클라이언트가 주문을 전달할 위치를 나타낸다. 예를 들어, "/order"라는 URI를 사용할 수 있다.
요청 데이터:
	클라이언트는 요청에 필요한 데이터를 함께 전달한다. 예를 들어, 주문한 메뉴와 주문 시간을 데이터로 포함시킨다.
서버의 처리:
	카페는 클라이언트로부터 주문 요청을 받는다.
	카페는 주문을 처리하여 아이스 커피를 만들고, 제공 가능한 응답을 생성한다.
	카페는 응답으로 주문 번호와 예상 준비 시간을 클라이언트에게 전달힌다.
응답 데이터:
	서버는 클라이언트에게 주문 번호와 예상 준비 시간을 데이터로 포함시킨 응답을 보낸다.

REST의 제약조건

로이필딩이 제시한 REST 제약조건으로는 다음과 같다.

  1. 클라이언트/서버 (Client/Server) 구조:
    클라이언트와 서버는 독립적으로 발전하고 관리될 수 있다.
    클라이언트는 사용자 인터페이스와 관련된 역할을 수행하고, 서버는 데이터 저장과 처리와 관련된 역할을 수행한다.
    이로써 시스템의 확장성과 재사용성을 향상시킬 수 있다.

  2. 상태 없음 (Statelessness):
    서버는 클라이언트의 상태를 관리하지 않는다.
    각 요청은 클라이언트에 필요한 모든 정보를 포함하고 있어야 한다.
    이로써 서버의 부담을 줄이고, 확장성과 가용성을 향상시킬 수 있다.

  3. 캐시 가능 (Cacheability):
    서버 응답은 캐싱될 수 있어야 한다.
    클라이언트는 캐시된 응답을 재사용할 수 있으므로, 네트워크 지연 시간을 줄이고 성능을 향상시킬 수 있다.

  4. 계층화 (Layered System):
    클라이언트는 서버와 직접 통신하며, 서버는 중간 계층 (라우터, 게이트웨이 등)을 통해 다른 서버와 통신할 수 있다.
    이를 통해 시스템의 확장성과 보안성을 향상시킬 수 있다.

  5. 인터페이스 일관성 (Uniform Interface):
    서버의 기능은 일관된 인터페이스를 통해 노출되어야 한다.
    HTTP 메서드(GET, POST, PUT, DELETE 등)를 사용하여 리소스에 대한 액션을 수행하고, 리소스를 식별하는 URI를 사용하여 리소스에 접근한다.
    이로써 시스템의 가시성과 이해성을 향상시킬 수 있다.

  6. Code-On-Demand (Optional)
    Server 에서 보낸 코드를 Client에서 실행할 수 있어야함을 의미한다.
    선택적인 조건 사항으로 필요에 따라, 지켜도되고, 지키지않아도 REST에는 문제가 없다.

REST API의 중요성

  • 클라이언트와 서버의 분리: REST API는 클라이언트와 서버의 역할을 분리하여 독립적인 개발과 확장을 가능하게 한다.
  • 플랫폼 독립성: REST API는 HTTP 프로토콜을 기반으로 하므로 다양한 플랫폼에서 사용할 수 있다.
  • 유연성과 확장성: REST API는 리소스 단위로 데이터와 기능을 표현하여 유연하고 확장 가능한 API 설계를 지원한다.
  • 상태 없음: REST API는 상태를 관리하지 않으므로 서버의 확장성이 높아지고 클라이언트가 독립적으로 작업할 수 있다.
  • 가독성과 이해성: REST API는 URL 구조와 HTTP 메서드를 사용하여 직관적이고 이해하기 쉬운 API 인터페이스를 제공한다.
  • 일관된 인터페이스: REST API는 표준화된 HTTP 메서드를 사용하여 일관된 인터페이스를 제공하여 개발자들이 쉽게 사용할 수 있도록 한다.

래퍼런스
부스트 코스 : https://www.boostcourse.org/web316/lecture/16740?isDesc=false
우테코 10분 talk : https://www.youtube.com/watch?v=Nxi8Ur89Akw
그런 REST API 로 괜찮은가 : https://www.youtube.com/watch?v=RP_f5dMoHFc&t=2516s
얄팍한 코딩사전 : https://www.youtube.com/watch?v=iOueE9AXDQQ

profile
새싹 개발자

0개의 댓글