REST API에 대해 알아보자

Nov 28, 2023
REST API에 대해 알아보자
REST API는 한번 쯤은 들어보고 사용해봤을 것이다. 근데 중요한건? 무엇인지 알고 쓰는 것! REST API에 대해 알아보자.

API란 무엇인가?

  • Application Programming Interface의 약자.
  • 정의 및 프로토콜 집합을 사용해서 두 소프트웨어 구성 요소가 통신할 수 있게 하는 메커니즘이다.

API 쉽게 이해하기

보통 API를 설명할 때, 레스토랑으로 비유를 많이한다.
  • 주방(서버): 음식을 만들고 서빙하는 곳으로 데이터나 서비스를 제공하는 서버 역할과 비슷하다.
  • 메뉴판(API): 메뉴판은 레스토랑과 손님 사이에서 의사소통을 도와주는 중간 역할을 한다. API의 역할과 비슷하다.
  • 손님(클라이언트): 음식을 주문하는 손님으로 클라이언트의 역할이다.
손님(클라이언트)은 원하는 음식(데이터)를 메뉴판(API)를 통해 주방(서버)에 요청하고 주방(서버)는 요청받은 값을 조리(데이터처리)해서 손님(클라이언트)에게 제공한다.
notion image

REST란 무엇인가?

REST API 소개

REpresentational State Transfer의 약자로 웹 서비스를 위한 아키텍처 스타일 중 하나이다. 현대 웹 서비스의 핵심으로 클라이언트와 서버간의 효율적인 통신과 간결하고 확장 가능한 솔루션을 제공한다.

REST API 특징

  • HTTP 프로토콜의 장점을 살린 통신규약이다.
  • 각 자원은 고유한 URI를 가지고 있으며, URI는 자원을 식별하는 데 사용된다.
  • HTTP Method(POST, GET, PUT, DELETE)를 이용해 자원에 대한 CRUD 연산을 적용한다.

REST API의 구성요소

REST API의 동작원리는 기본적으로 자원(Resource)과 해당 자원에 대한 행위(method) 그리고 표현(Representation)으로 이루어 진다.
  • 자원(Resource): 클라이언트가 관리하고자 하는 모든 것을 나타내며, 고유한 식별자 URI를 부여한다.
  • 행위(HTTP Method): 자원에 대한 특정 동작을 의미하며 HTTP 메서드로 사용된다. GET(조회), POST(생성), PUT(갱신), PATCH(일부갱신), DELETE(삭제) 등이 있다.
  • 표현(Representation): 자원의 상태를 나타내는 방식을 의미한다. 주로 JSON 또는 XML형식을 사용하여 자원의 표현을 정의한다.
HTTP 메서드는 아래 페이지 참고!

REST 디자인 패턴

1. 무상태성(Stateless)
  • 각각의 요청이 서버에 의해 독립적으로 처리되며, 이전의 요청에 대한 상태를 서버가 저장하지 않는 원칙.
  • 서버가 각 클라이언트의 상태를 유지할 필요가 없어서 확장성을 향상시킨다.
2. 클라이언트-서버 아키텍처(Client-Server Architecture)
  • 시스템을 클라이언트와 서버로 나누어, 각각의 역할을 개발하고 확장 가능하다.
  • 클라이언트는 UI 및 사용자 요청을 담당하고, 서버는 DB나 서비스에 대한 처리를 담당한다.
3. 일관된 인터페이스(Uniform Interface)
  • HTTP 표준을 따르면 뭐든 가능하다는 의미이다. 웹주소(URI)로 특정 리소스를 표현하고 다루는 일관된 방법이다.
  • 즉, 언어와 플랫폼의 제약이 없다. 그래서 REST API가 많이 쓰여지는 이유이다.
4. 캐싱 가능성(Cacheability)
  • 리소스에 대한 반복적인 요청이나 다운로드를 피하고 빠른 응답을 제공할 수 있게 해준다.
  • 이전에 받은 리소스를 다시 사용함으로써, 네트워크 사용량을 줄이고 성능을 향상시킨다.
  • 캐싱은 대규모 서비스에서 중요하며, UX 및 시스템 효율성을 높이는데 기여한다.
5. 계층화(Layered System)
  • 호출과 응답이 서로 다른 계층을 가진다.
  • 계층을 분리함으로써 각 계층간 의존성을 최소화한다.
6. 코드 온디맨드(Code On demand)
  • REST API는 일반적으로 정적 리소스를 제공하지만, 특정한 경우에는 응답에 실행 코드를 포함 할 수도 있다.

URI 설계 원칙

1. 슬래시(/)를 활용한 계층 관계 표현
/users/123/orders
위 예시는 사용자 123의 주문 목록에 접근하는 경로를 나타낸다.
2. URI 마지막 문자로 슬래시 ( / )를 포함하지 않는다.
/users/123/orders/
위의 예시는 권장하지 않는 방식이다.
3. 밑줄 ( _ ) 보다 하이픈( - )을 사용한다. 잘못된 예시부터 보겠다.
/users/123/order_list/
다음은 권장 하는 방식이다.
/users/123/order-list/
4. URI 경로는 소문자를 사용한다. 위의 예시들을 참고하자.
5. 파일 확장자는 URI에 포함하지 않는다 잘못된 예시를 보자.
url = "<http://sample.com/user-images/kim.jpg>"

RESTful API는 뭐지?

REST API의 설계 규칙을 잘 따라 설계된 API를 RESTful한 API라고 한다.
참고자료1: https://aws.amazon.com/ko/what-is/api/ 참고자료2: https://www.ibm.com/kr-ko/topics/rest-apis
Share article

mulab