REST API는 사용자, 문제, 주문 같은 리소스를 중심으로 웹 API를 설계하는 대표적인 방식입니다. 각 리소스에는 URL이 있고, GET, POST, PATCH, DELETE 같은 HTTP 메서드가 클라이언트가 서버에 무엇을 원하는지 알려줍니다.

REST는 Representational State Transfer의 약자입니다. 실제로는 클라이언트가 HTTP 요청을 보내고, 서버는 리소스의 표현을 반환하며, 각 요청은 그 자체만으로 이해될 수 있어야 합니다. 많은 REST API가 JSON을 반환하지만, JSON을 쓴다고 해서 자동으로 RESTful한 API가 되는 것은 아닙니다.

REST API 뜻: 리소스 중심으로 생각하기

REST를 가장 빠르게 이해하는 방법은 동사보다 명사로 생각하는 것입니다.

시스템에 문제, 학생, 제출 시도 같은 대상이 있다면, 이것들이 리소스가 될 수 있습니다. 리소스 중심 API는 보통 /api/problems/42/api/attempts/9001 같은 URL을 사용합니다.

그다음 어떤 작업이 일어나는지는 HTTP 메서드가 알려줍니다:

  • GET은 리소스를 조회합니다
  • POST는 새 리소스를 생성합니다
  • PUT은 리소스를 전체 교체합니다
  • PATCH는 리소스의 일부를 수정합니다
  • DELETE는 리소스를 삭제합니다

이렇게 역할이 나뉘어 있기 때문에 REST는 구조를 빠르게 파악하기 쉽습니다. URL은 무엇을 다루는지 말해 주고, 메서드는 무엇을 하고 싶은지 말해 줍니다.

REST API 요청은 어떻게 동작할까

일반적인 흐름에서는 브라우저, 모바일 앱, 또는 다른 서비스가 서버로 요청을 보냅니다. 요청에는 URL, HTTP 메서드, 선택적인 헤더, 그리고 때로는 본문이 포함됩니다.

서버는 요청을 읽고 작업을 수행한 뒤 응답을 반환합니다. 이 응답에는 보통 200 OK, 201 Created, 404 Not Found 같은 상태 코드와 함께, 결과를 설명하는 데이터가 들어 있습니다.

중요한 조건 하나는 무상태성(statelessness) 입니다. REST에서는 각 요청이 그 요청을 처리하는 데 필요한 문맥을 스스로 담고 있어야 합니다. 이것은 서버가 아무 데이터도 저장하지 않는다는 뜻이 아닙니다. 현재 요청을 이해하기 위해 서버가 이전 요청의 숨겨진 대화 상태에 의존하면 안 된다는 뜻입니다.

REST API 예시: 수학 연습 앱

대수 문제와 학생의 제출 시도를 저장하는 수학 연습 앱이 있다고 가정해 봅시다.

문제 4242를 조회하려면 클라이언트는 다음과 같이 보낼 수 있습니다:

문제 풀이가 필요하신가요?

문제를 올리면 검증된 단계별 풀이를 몇 초 만에 받을 수 있습니다.

GPAI Solver 열기 →