REST API란?

98oys·2023년 7월 18일

CS

목록 보기
2/5

Representational State Transfer의 약자

자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 모든 것을 의미합니다.

예를들어 데이터베이스의 "students" 테이블에 학생의 정보가 있을 때, 여기서 학생 정보는 하나의 자원이라고 할 수 있습니다. 이 때 자원의 이름 students입니다.

클라이언트는 학생의 정보에 대해 접근하고 싶을 때 students에 요청을 보내고, 서버는 students에 대한 정보를 클라이언트에게 요청에 대한 응답을 해줍니다.
이처럼 학생 정보라는 자원을 이름(students)으로 구분하고, 해당 자원의 상태(정보)를 주고 받는 모든 것을 REST API라고 합니다.

조금 더 쉽게 알아보겠습니다.

프론트엔드에서 서버에게 데이터를 요청하거나 배달 앱에서 서버에 주문을 넣거나 등 이런 서비스에서 REST API가 사용되고 있습니다.

REST API의 가장 중요한 특성은
각 요청이 어떤 동작이나 정보를 위한 것인지를 그 요청의 모습 자체로 추론이 가능하다는 것입니다.
만들고자 하는 서비스에서 기능 자체만 중요하게 생각한다면 REST를 생각할 필요없이 동작만 잘 하게 개발할 수 있습니다. 하지만 어떤 학원의 반과 학생들에 대한 정보를 제공하는 API를 만들 때,

1. 학원의 반 리스트 요청
https://(도메인주소)/1 
2. 반 학생들 리스트 요청 
https://(도메인주소)/hello
3. 반 학생 정보 수정 요청 
https://(도메인주소)/r-e-s-t

위와 같은 방식으로 API를 만들어도 이에 맞춰 요청을 보내는 앱을 만든다면 서비스는 정상적으로 동작하겠죠.
하지만 문제는 서비스를 개발자 혼자 만드는 것이 아니라는 것입니다.
당장 혼자라도, 나중에 이어받을 개발자나, 이 API를 사용해서 다른 제품을 마들 개발자들은 굉장히 일하기 힘들 것입니다.
Restful하게 만든 API는 요청을 보내는 주소만으로도 대략적으로 이것이 무엇을 요청하는지 파악이 가능해야합니다.
학원 데이터베이스에 정보를 보내달라는 요청을 할 때

1. 학원의 반 리스트 요청
https://(도메인주소)/classes
2. 반 학생들 리스트 요청
https://(도메인주소)/classes/2
3. 반 학생 정보 요청
https://(도메인주소)/classes/2/students/15

1번 요청처럼 주소에 classes가 붙는다면 반에 대한 정보를 요청하는 것임을 예상할 수 있습니다.
2번처럼 뒤에 index가 붙는다면 2반의 정보를 요청하는 것임을 예상할 수 있습니다.
index뒤에 students/15가 붙는다면 2반의 15번 학생의 정보를 요청하는 것임을 예상할 수 있습니다.

이처럼 Restful하게 API를 만든다면 주소만 보고도 대략적으로 어떤 데이터를 응답해줄 지 예상할 수 있습니다.

자원을 구조와함께 나타내는 형태의 구분자를 URI라고 합니다.
그런데 이런 조회작업 뿐 아니라 정보를 새로 넣거나 수정, 삭제같은 작업들을 CRUD라고 부릅니다.

  • Create
  • Read
  • Update
  • Delete

서버에 REST API로 요청을 보낼때는 HTTP라는 프로토콜에 따라 신호를 전송합니다.
우체국에서 택배를 보낼 때, 일반우편, 등기, 택배 등 다양한 방식이 있듯이 이 HTTP로 요청을 보낼 때도 여러개의 메소드가 있습니다.
REST API에서는 GET, POST, DELETE, PUT, PATCH이 5가지를 주로 사용합니다.
소포가 편지보다 더 많은 것을 담을 수 있듯이 POST, PUT, PATCH에는 body라는 주머니가 있습니다.
GET, DELETE보다 더 많은 정보들을 담을 수 있습니다. 비교적 안전하게 감춰서 실어 보낼 수 있습니다.
사실 이것들의 기능이 특정 용도에 제한되어 있지는 않습니다. 예를 들어 POST 하나로도 데이터를 읽고 쓰고 지우고 다 할 수 있습니다. 하지만 누구든지 읽고 쉽게 이해하기 위해,, Restful하게 만들기 위해서는 이들을 목적에 따라 구분해서 사용해야 합니다.

간단하게 정리를 해보면,,
GET : 데이터 조회
POST : 데이터 추가
PUT, PATCH : 데이터 수정
DELETE : 데이터 삭제

데이터를 수정할 때 PUT하나로 사용하는 곳도 많지만, 정석은 PUT은 정보 통째로 갈아 끼울때, PATCH는 일부만 변경할 때 사용합니다.

profile
Android Developer, Department of Information and Communication Engineering, Inha University

0개의 댓글