
개발자라면 한 번쯤 들어봤을 "API" 와 "REST API"를 한번 알아보자!
우선 API는 Application Programming Interface 의 약자이다.
쉽게 말해, 서로 다른 프로그램이나 서비스가 소통할 수 있게 해주는 통로이다.
즉, API는 우리가 모르는 사이에 다양한 서비스와 앱에서 정보를 주고받는 다리 역할을 하고 있다.
API에도 여러 종류가 있는데, 여러 종류 중 가장 많이 쓰이는 방식이 바로 REST API이다.
REST는 "Representational State Transfer"의 약자로, 웹 서비스 구축을 위한 아키텍처 방식이다. 리소스를 URI로 표현하고, HTTP 메서드(GET, POST 등)로 자원을 조작하는 규칙을 정의합니다. 이는 상태를 저장하지 않고, 클라이언트-서버 분리, 일관된 인터페이스 등의 원칙을 따르며 웹의 기존 인프라를 최대한 활용해 시스템을 설계하는 접근법을 말한다.
URI는 더 넓은 개념으로, 인터넷상의 리소스를 식별하는 모든 형태의 식별자를 포함한다. 반면 URL은 URI의 한 종류로, 리소스의 위치와 접근 방법까지 명시합니다. 즉, 모든 URL은 URI이지만, 모든 URI가 URL은 아니다.
예를 들어, 주민등록번호는 URI와 같다. 주민등록번호는 내가 누구인지 식별할 수 있지만, 나를 어디서 찾을 수 있는지는 알려주지 않는다. 반면에 집 주소는 URL과 같다. 주소는 직접 찾아갈 수 있는 구체적인 위치를 알려준다.
| 메서드 | 설명 |
|---|---|
| GET | 서버에 있는 데이터를 가져온다. |
| POST | 서버에 데이터 생성요청 |
| PUT | 서버에 있는 데이터를 수정한다. (덮어쓰기) |
| DELETE | 데이터, 리소스 삭제 요청 |
| PATCH | 서버에 있는 데이터를 일부만 수정한다. |
REST의 원칙을 따라 만든 API를 REST API라고 부른다.
즉, 웹에서 데이터를 주고받을 때 가장 널리 쓰이는 표준화된 방식이다.
HTTP 프로토콜을 기반으로 리소스를 URI로 표현하고, HTTP 메서드(GET, POST, PUT, DELETE 등)를 통해 자원을 효율적으로 받거나 줄 수 있도록 도와준다.
/users/1)REST API의 원칙은 웹 서비스가 잘 작동하도록 도와주는 기본 규칙들이다. 마치 도로 위의 교통 규칙처럼, 모두가 같은 규칙을 따르면 서로 잘 소통할 수 있다.
클라이언트-서버 구조
마치 식당에서 손님과 주방이 분리된 것과 같다. 손님(클라이언트)은 메뉴판을 보고 주문만 하고, 주방(서버)은 음식을 만드는 일에만 집중한다. 이렇게 역할을 나누면 각자 자기 일에만 신경 쓸 수 있다.
무상태성
매번 대화할 때마다 처음부터 모든 정보를 주는 것과 같다. 예를 들어, 친구에게 문자를 보낼 때 매번 "나 진이야"라고 말해주는 것이다. 이렇게 하면 서버가 클라이언트를 기억할 필요 없이 요청만 처리하면 된다.
캐시 가능성
한 번 찾은 정보를 메모해두는 것과 같다. 학교 시험 공부를 할 때 자주 찾는 공식을 노트에 적어두면 책을 매번 펼칠 필요가 없다. 자주 사용하는 정보는 저장해두고 재사용하면 더 빨라진다.
계층화 시스템
편지 배달과 비슷하다. 친구에게 편지를 보내면, 우체통에 넣고 우체부가 배달하고 친구가 받는 여러 단계를 거치지만, 그저 편지를 보냈다는 것만 알면 된다. 마찬가지로 클라이언트는 서버와 직접 연결되었는지 중간에 다른 서버를 거치는지 몰라도 된다.
일관된 인터페이스
모든 가게의 계산대가 비슷하게 생긴 것과 같다. 어떤 가게를 가도 물건을 고르고, 계산대에 가서, 돈을 내는 방식이 비슷하다. REST API도 리소스를 찾고, 요청하고, 응답받는 방식이 일관되어 있어 누구나 쉽게 이용할 수 있다.
코드 온 디맨드 (선택 사항)
이건 마치 장난감을 사면 배터리가 포함되어 있는 것과 같다. 꼭 필요한 건 아니지만 있으면 바로 사용할 수 있다. 서버가 클라이언트에게 실행 코드를 주면 클라이언트는 그걸 바로 실행할 수 있다.
이 원칙들을 모두 지키면, 여러 개발자들이 함께 일해도 웹 서비스가 효율적으로 작동하고, 사용자들은 빠르고 안정적인 서비스를 이용할 수 있게 된다.
| 동작 | HTTP 메서드 | 예시 URL | 설명 |
|---|---|---|---|
| 사용자 조회 | GET | /users/1 | 1번 사용자 정보 가져오기 |
| 사용자 생성 | POST | /users | 새 사용자 만들기 |
| 사용자 수정 | PUT | /users/1 | 1번 사용자 정보 수정 |
| 사용자 삭제 | DELETE | /users/1 | 1번 사용자 삭제 |
| 구분 | API | REST API |
|---|---|---|
| 정의 | 프로그램 간 소통을 위한 모든 인터페이스 | REST 원칙을 따르는 웹 API |
| 프로토콜 | HTTP, FTP, TCP 등 다양 | 주로 HTTP |
| 구조 | 정해진 규칙 없음 | URL, HTTP 메서드 등 명확한 규칙 존재 |
| 데이터 형식 | 제한 없음 | 주로 JSON, XML |
| 용도 | 범용적 | 웹 서비스에서 데이터 주고받기 |
정리하자면,