RESTful API

기술노트

🤝 RESTful API

REST (REpresentational State Transfer)는 웹 서비스의 아키텍처 스타일 중 하나로, 네트워크 상에서 클라이언트와 서버가 통신하는 방식의 한 종류입니다. REST의 원칙을 충실히 따르는 API를 RESTful API라고 부릅니다.

오늘날 웹 API 설계의 사실상 표준(de facto standard)으로 여겨집니다.


📌 REST의 핵심 구성 요소

  • 자원 (Resource) : 모든 데이터는 '자원'으로 취급되며, 각 자원은 고유한 URI(Uniform Resource Identifier)를 가집니다. (예: `/users/123`)
  • 행위 (Verb) : 자원에 대한 행위는 HTTP 메서드(GET, POST, PUT, DELETE 등)를 통해 명시적으로 표현합니다.
  • 표현 (Representation) : 클라이언트와 서버가 주고받는 자원의 상태는 JSON, XML 등 특정 형태로 표현됩니다. 일반적으로 JSON이 가장 많이 사용됩니다.

📜 RESTful API 설계 원칙

원칙 설명
클라이언트-서버 구조 클라이언트와 서버의 역할이 명확히 분리되어, 서로 독립적으로 발전할 수 있음
무상태성 (Stateless) 서버는 클라이언트의 상태를 저장하지 않음. 모든 요청은 필요한 모든 정보를 담고 있어야 함
캐시 가능 (Cacheable) 서버의 응답은 캐시가 가능해야 함. 이를 통해 성능과 확장성을 높일 수 있음
계층화 시스템 (Layered System) 클라이언트는 서버와 직접 통신하는지, 중간의 프록시 서버와 통신하는지 알 수 없음
균일한 인터페이스 (Uniform Interface) URI로 자원을 식별하고, HTTP 메서드로 자원을 조작하는 등 일관된 인터페이스를 가져야 함

💡 개발자 핵심 Point

  • RESTful API는 URI는 자원을 표현하는 데 집중하고, 행위는 HTTP 메서드로 표현하는 것이 핵심입니다. (예: `GET /users/123`은 123번 유저의 정보를 가져오는 것)
  • `/getUser` 와 같이 URI에 행위가 들어가는 것은 RESTful한 설계가 아닙니다.
  • 명확하고 일관된 API 설계를 통해, 프론트엔드와 백엔드 개발자는 효율적으로 협업할 수 있습니다.
  • 백엔드 개발자의 핵심 역량 중 하나는 직관적이고 사용하기 쉬운 RESTful API를 설계하고 문서화하는 능력입니다.