저장을 습관화

API, REST API, RESTful API 본문

공부/메모

API, REST API, RESTful API

ctrs 2024. 1. 8. 20:04

원문 출처: https://brunch.co.kr/@jhw28/31

 

클라이언트와 서버의 대화 방법, API

[코드스테이츠 PMB 11] Ep26. API, Open API | 개발자와 기획자는 어떻게 다를까? 기획자 : "지난주에 요청드린 작업 언제까지 될까요?"개발자 : "아 그게 서버에서 이미지 URL을 보내줘야 하는데, API가 미

brunch.co.kr

 

1. API란

Applicatoin Programming Interface, 응용 프로그래밍 인터페이스 

애플리케이션 소프트웨어를 빌드하고 통합하기 위한 인터페이스이다. 

API는 프로그램들이 서로 상호작용하는 것을 도와주는 매개체이자 규칙으로 볼 수 있다.

 

 

예를 들어, 어느 날 맛있는 식사를 하기 위해 멋진 레스토랑을 방문했다고 가정해보자.

점원이 가져다준 메뉴판을 보면서 먹음직스러운 스테이크를 고르면 점원이 주문을 받아 요리사에 요청을 할 것이다.

그러면 요리사는 정성껏 스테이크를 만들어 점원에게 주고, 우리는 점원이 가져다준 맛있는 음식을 먹을 수 있게 된다.

 

여기서 점원의 역할을 한 번 살펴보겠다. 점원은 손님에게 메뉴를 알려주고, 주방에 주문받은 요리를 요청한다.

그 다음 주방에서 완성된 요리를 손님께 다시 전달하낟. 바로 API는 점원과 같은 역할을 한다.

 

API는 손님(프로그램)이 주문할 수 있게 메뉴(명령 목록)를 정리하고, 주문(명령)을 받으면 요리사(응용프로그램)와 상호작용하여 요청된 메뉴(명령에 대한 값)를 전달한다.

 

쉽게 말해, API는 프로그램들이 서로 상호작용하는 것을 도와주는 매개체로 볼 수 있다.

 

 

API 역할

1. 서버와 데이터베이스에 대한 출입구 역할을 한다.

데이터베이스에는 정보들이 저장되어 있는데, 모든 사람들이 이 DB에 접근할 수 있으면 안 될 것이다.

API는 이를 방지하기 위해 여러분이 가진 서버와 DB에 대한 출입구 역할을 하며, 허용된 사람들에게만 접근성을 부여해준다.

 

2. 애플리케이션과 기기가 원활하기 통신할 수 있도록 한다.

API는 애플리케이션과 기기가 데이터를 원활히 주고받을 수 있도록 돕는 역할을 한다.

 

3. 모든 접속을 표준화한다.

API는 모든 접속을 표준화하기 때문에 기계/운영체제 등과 상관없이 누구나 동일한 액세스를 얻을 수 있다.

그래서 API는 범용 플러그처럼 작동한다고 볼 수 있다.

 

 

REST API

REST란

REST(Representational State Transfer)는 자원을 이름(자원의 표현)으로 구분해

해당 자원의 상태(정보)를 주고받는 모든 것을 의미한다.

 

즉, 자원(resource)의 표현(representation)에 의한 상태 전달을 뜻한다.

 

자원은 해당 소프트웨어가 관리하는 모든 것으로 문서, 그림, 데이터, 해당 소프트웨어 자체 등이다.

자원의 표현은 그 자원을 표현하기 위한 이름이다.

예를 들어, DB의 학생 정보가 자원일 때, 'students'를 자원의 표현으로 정한다.

 

상태(정보) 전달은 데이터가 요청되는 시점에서 자원의 상태(정보)를 전달한다.

JSON 혹은 XML을 통해 데이터를 주고 받는 것이 일반적이다.

 

REST는 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일이며, 네트워크 상에서 Client와 Server 사이의 통신 방식 중 하나이다.

 

 

REST의 구성 요소

1. 자원(Resource) : URI

  • 모든 자원에 고유한 ID가 존재하고, 이 자원은 Server에 존재한다.
  • 자원을 구별하는 ID는 '/groups/:group_id'와 같은 HTTP URI다.
  • Client는 URI를 이용해서 자원을 지정하고 해당 자원의 상태(정보)에 대한 조작을 Server에 요청한다.

2. 행위(Verb) : HTTP Method

  • HTTP 프로토콜의 Method를 사용한다.
  • HTTP 프로토콜은 대표적으로 GET, POST, PUT, PATCH, DELETE와 같은 메서드를 제공한다.

3. 표현(Representation of Resource)

  • Client가 자원의 상태(정보)에 대한 조작을 요청하면 Server는 이에 적절한 응답(Representation)을 보낸다.
  • REST에서 하나의 자원은 JSON, XML, TEXT, RSS 등 여러 형태의 Representation으로 나타내어질 수 있다.
  • JSON 혹은 XML을 통해 데이터를 주고받는 것이 일반적이다.

 

REST API

 

REST API란 REST 아키텍처의 제약 조건을 준수하는 애플리케이션 프로그래밍 인터페이스를 뜻한다.

API는 정의된 규칙이기 때문에 개발자가 직접 정의할 수도 있지만, 수많은 규칙들이 존재하고 서로 상이하다면 정보 교환이 어려워진다.

그래서 규칙을 통일하게 되었고 이때 만든 통일된 규칙이 REST API이다.

최근 OpenAPI, 마이크로 서비스 등을 제공하는 업체 대부분은 REST API를 제공한다.

 

REST API의 가장 큰 특징은 각 요청이 어떤 동작이나 정보를 위한 것인지를 그 요청의 모습 자체로 추론이 가능하다는 것이다.

HTTP 표준을 기반으로 구현하므로, HTTP를 지원하는 프로그램 언어로 클라이언트, 서버를 구현할 수 있다.

 

 

REST API의 구성 요소

1. 클라이언트 : 통신을 시작하는 사용자 측에서 시작된 클라이언트 또는 프로그램

2. 서버 : API를 기능 및 데이터에 대한 액세스로 사용하는 서버

3. 자원 : 서버가 클라이언트에 전송하는 모든 컨텐츠(비디오, 텍스트, 사진)

 

 

REST API의 작동 방식

REST API는 HTTP 요청을 통해 통신하여 데이터 생성, 읽기, 업데이트 및 삭제 기능을 완료한다.

CURD(Create, Read, Update, Delete) 연산이라고도 하며, REST는 요청된 리소스에 대한 정보를 제공하고

리소스로 수행할 작업을 설명하는 네 가지 방법을 사용한다.

 

 

HTTP Methods

HTTP 프로토콜은 주로 GET, POST, PUT, DELTE의 Method를 제공한다.

  • POST - Create: 리소스 생성 (데이터를 생성해라)
  • GET - Read: 리소스 요청 (데이터를 불러와라)
  • PUT - Update: 리소스 업데이트 (데이터를 변경해라)
  • DELETE - Delete: 리소스 삭제 (데이터를 삭제해라)

Update에는 PUT 외에도 PATCH도 자주 쓰인다.

둘의 차이는 데이터 전체를 변경하는거 데이터 중 하나만 변경하는가이다.

 

예를 들어 DB에 존재하는 데이터 { "name" : "ctrs", "blog" : "tistory" }를 수정할 때,

PUT를 사용하면 JSON에 { "name" : "변경할 값", "blog" : "변경할 값" }을 둘 다 입력해야 하지만,

PATCH를 사용하면 { "blog" : "변경할 값" } 만 입력해도 된다.

 

단 이는 일반적인 경우이며 어플리케이션의 에러 처리, DTO 등 설정에 따라 불가능할 수도 있다.

 

 

RESful API

RESTful은 REST의 설계 규칙을 잘 지켜서 설계된 API를 뜻한다.

일반적으로 REST라는 아키텍처를 구현하는 웹 서비스를 나타내기 위해 사용되는 용어이다.

RESTful하기 만든 API는 요청을 보내는 주소만으로도 어떤 것을 요청하는지 파악이 가능하다.

 

 

추가적으로 볼만한 영상: 그런 REST API로 괜찮은가