API와 REST API. 어디서 한 번씩은 들어봤을 것이다. 근데 처음에 이 단어들을 접했을 때, 너무 추상적으로 다가오고 확실한 이해가 가지 않았었다. 부끄럽지만 지금까지도 그냥 대충 알고는 있는데 누가 설명해보라고 한다면 자신있게 대답 못할 것 같았다. 그래서 오늘은 API와 REST API를 나와 같은 초보자들도 최대한 간단하고 쉽게 이해할 수 있도록 글을 써볼까 한다. 우선 API를 설명하기 전에 Interface(인터페이스) 가 무엇인지 설명을 해볼까 한다.
Interface(인터페이스)
인터넷에 인터페이스를 검색해보면,
'인터페이스(interface)는 서로 다른 두 개의 시스템, 장치 사이에서 정보나 신호를 주고받는 경우의 접점이나 경계면이다. 즉, 사용자가 기기를 쉽게 동작시키는데 도움을 주는 시스템을 의미한다.'
라고 나온다. 인터페이스의 종류는 굉장히 많은데 가장 이해하기 쉬운 예시를 예로 들자면, 만약 한 사람이 자판기에서 음료를 사려고 하는데 버튼을 누르면 음료수가 자판기 밑으로 나와 사람에게 전달이 된다. 여기서 버튼이 인터페이스라고 할 수 있다. 사용자는 버튼을 누르기만 하면 되며, 자판기 내부에서 어떤 작업(음료 선택, 배출 과정)이 이루어지는지 알 필요가 없다. 이처럼 인터페이스는 사용자와 시스템 간의 복잡한 과정을 단순화하여 연결해 주는 매개체 역할을 한다.
API(Application Programming Interface)
그렇다면 API를 무엇이라고 할 수 있을까? ' 애플리케이션이 어떤 기능을 사용할 수 있도록 제공하는 인터페이스'다. 이 개념이 조금 추상적으로 느껴진다면, 특정 기능을 호출할 수 있는 규칙이나 설계라고 생각해도 좋고, 정말 이해가 가지 않는 사람 입장에서는 그 특정 기능 자체라고 생각해도 좋을 거 같다.
예시로, 만약 어떤 은행앱을 만드는 프로젝트에 개발자가 들어가게 됐는데, '계좌 조회 해주는 api를 만들어주세요'라고 지시를 받는다면, 사용자가 조회 버튼을 눌렀을때 계좌 잔액 화면이 뜰 수 있도록 하는 기능을 만든다고 볼 수 있기 때문에 기능이라고 생각을 해도 좋다는 것이다. 하지만 정확한 의미로는 해당 기능을 사용할 수 있는 인터페이스를 만든다고 표현하는 것이 더 정확하다.
REST API(Representational State Transfer API)
REST API는 HTTP 프로토콜을 기반으로 작동하며, 자원을 고유한 URI로 식별하고, 표준 HTTP 메서드(GET, POST, PUT, DELETE 등)를 사용하여 해당 자원을 조회하거나 처리할 수 있도록 설계된 API이다. 이게 무슨 말이냐고 생각할 수도 있을 것 같은데 REST API는 API의 일종이지만 특정 조건을 만족해야한다. 대표적으로 리소스 중심 설계와 HTTP 메서드의 올바른 사용이 있다.
첫 번째, REST API에서는 데이터베이스에 저장된 데이터, 문서, 이미지, 동영상 등 HTTP 통신을 통해 주고 받을 수 있는 모든 것을 '리소스'라고 한다. 리소스 중심 설계는 REST API의 핵심 개념 중 하나로, 이러한 리소스들은 각기 고유한 URI로 식별되어야 한다.
두 번째, HTTP 메서드를 사용해야 하는데 목적에 맞게 올바르게 사용되어야 한다. 흔히 우리가 말하는 CRUD(Create, Read, Update, Delete) 작업을 할 때, 각각 GET, POST, PUT, DELETE가 알맞게 쓰여야 한다.
예를 들어, 도서 관리 시스템이 있다고 가정하고 REST 설계를 했을 경우와 비REST적 설계를 했을 경우를 각각 비교해서 보자.
- REST
- 모든 책 조회 : GET /books
- 특정 책 조회 : GET /books /{bookId}
<요청 예시 - 특정 책 조회>

- 새 책 추가 : POST /books
- 책 삭제 : DELETE /books /{bookId}
- 비REST
- 모든 책 조회 : POST /getBooks (HTTP 메서드 POST를 잘못 사용)
- 특정 책 조회 : POST /getBookById (ID를 URI에 포함하지 않음, 비REST적 설계)
<요청 예시 - 특정 책 조회>

- 새 책 추가 : POST /createBook
- 책 삭제 : POST /deleteBook
예시와 같이 REST 설계 방식은 매우 직관적이며, URI와 HTTP 메서드를 통해 요청의 의도를 명확히 전달할 수 있다. 이는 유지보수성과 확장성을 높이며, 클라이언트와 서버 간의 통신을 간소화한다.
'공개 글' 카테고리의 다른 글
| @GetMapping? @PostMapping? (0) | 2025.02.19 |
|---|---|
| html 기본 태그 (0) | 2025.02.04 |
| HTTP(HyperText Transfer Protocol) (1) | 2025.01.16 |
| Git과 GitHub (0) | 2025.01.13 |
| 백준 2869번 문제 - 달팽이는 올라가고 싶다 풀이(자바) (0) | 2024.09.24 |