RESTful API란 무엇인가요?

Suzy Lee·2023년 6월 2일
1

Frontend

목록 보기
20/32
post-thumbnail

RESTful API란?

Restful API는 HTTP 통신을 Rest 설계 규칙을 잘 지켜서 개발한 API를 Restful한 API라고 합니다.
REST의 6가지 원칙이 있는데, 이 원칙(아키텍처)를 잘 따르는 API를 RESTFul한 API 라고 말합니다.

그렇다면, REST는 무엇이고, 설계 규칙 그게 뭔가요?

무엇?

REST API는 "분산 시스템"을 위한 HTTP 기반 소프트웨어 아키텍쳐입니다. 즉, 웹 어플리케이션, 다양한 언어, 모바일 어플리케이션, 다른 서버(*전부 HTTP 기반)들과 서로 통신할 수 있도록, 통역 역할을 해주는 API

(참고) 분산시스템 : 하나의 시스템으로 보이는 독립된 컴퓨터들의 집합 -> 이를 위해 네트워크를 통한 컴퓨터 간의 통신이 필요

설계규칙 6가지 & 적용법

  1. Client-Server decoupling : 클라이언트-서버를 묶지 않기
    REST API 설계에서 클라이언트 및 서버 프로그램은 독립적이어야 합니다. 클라이언트 소프트웨어는 요청된 리소스의 URI만 알고 있어야 합니다. 서버 응용 프로그램과 추가 상호 작용이 없어야 합니다.

  2. Uniform Interface : 통일된 인터페이스
    URI로 지정한 Resource에 대한 요청을 통일적, 한정적으로 수행하는 아키텍처 스타일을 의미합니다. REST API는 사용자 이름이나 이메일 주소와 같은 유사한 데이터가 하나의 URI(Uniform Resource Identifier)에만 할당되도록 해야 합니다.

  3. Statelessness : 무상태
    REST API는 무상태입니다. 그래서 각 요청에는 요청을 처리하는 데 필요한 모든 정보가 포함되어야 합니다.

  4. Layered System architecture : 계층화된 시스템 아키텍처
    REST API 요청 및 응답은 여러 계층을 통해 라우팅(최적의 경로 선택)됩니다. REST API는 클라이언트나 서버가 최종 애플리케이션과 통신하는지 중개자와 통신하는지 알 수 없도록 설계되어야 합니다.

  5. Cacheable : 캐시 처리 기능
    웹 표준 HTTP 프로토콜을 그대로 사용하므로 웹에서 사용하는 기존의 인프라를 그대로 활용할 수 있습니다. 즉, HTTP가 가진 가장 강력한 특징 중 하나인 캐싱 기능을 적용할 수 있습니다. 또한 대량의 요청을 효율적으로 처리할 수 있습니다.

  6. Code on Demand : 주문형 코드
    REST API는 일반적으로 정적 리소스를 제공하지만 드물게 응답에 실행 코드(예: Java applets)가 포함될 수 있습니다. 이 경우 필요할 때 코드를 수행합니다.

(참고) 설계 시, 중요한 부분

따라서 REST API 설계 시 가장 중요한 항목은 다음의 2가지로 요약합니다.

  • 첫 번째, URI는 정보의 리소스를 표현해야 한다.
  • 두 번째, 리소스에 대한 행위는 HTTP Method(GET, POST, PUT, PATCH, DELETE)로 표현한다. 행위(Method)는 URI에 포함하지 않는다.

REST API를 사용하면 어떤 이점이 있나요?

1. 확장성
클라이언트와 서버가 분리되어 있어 개발팀이 큰 어려움 없이 제품을 확장할 수 있습니다.

2. 유연성
RESTful 웹 서비스는 완전한 클라이언트-서버 분리를 지원합니다.
서버 애플리케이션의 플랫폼 또는 기술 변경은 클라이언트 애플리케이션에 영향을 주지 않습니다. 그렇기에 개발자는 언제든지 데이터베이스에서 변경 사항을 수행할 수도 있습니다.

3. 독립성
REST API는 사용되는 기술과 독립적입니다. API 설계에 영향을 주지 않고 다양한 프로그래밍 언어로 클라이언트 및 서버 애플리케이션을 모두 작성할 수 있습니다. 또한 통신에 영향을 주지 않고 양쪽의 기본 기술을 변경할 수 있습니다.

4. 경량성
REST API는 JSON, XML 및 HTML을 포함한 여러 형식을 지원하는 HTTP 표준을 활용하므로 가볍고 빠릅니다. 이 기능은 모바일 앱 프로젝트, IoT 장치 등에 이상적입니다.

참고자료

1. RESTful API란 무엇입니까?
https://aws.amazon.com/ko/what-is/restful-api/
2. REST란? REST API 와 RESTful API의 차이점
https://dev-coco.tistory.com/97
3. What Is a REST API? Examples, Uses, and Challenges
https://blog.postman.com/rest-api-examples/
4. [REST API] REST / REST API 개념과 적용 + 코드 예제 (SpringBoot 기반)
https://creamilk88.tistory.com/184
5. What is Rest API? Features, Principles, And Challenges
https://www.knowledgehut.com/blog/programming/rest-api
6. Best practices for REST API design
https://stackoverflow.blog/2020/03/02/best-practices-for-rest-api-design/#h-use-nouns-instead-of-verbs-in-endpoint-paths

profile
고통 속에 무언가 탄생하고 있다:-)

0개의 댓글