Computer Science

RESTful API 개요

devhyen 2024. 7. 3. 11:21
반응형

RESTful API란?

RESTful API는 REST(Representational State Transfer) 원칙을 따르는 웹 API를 의미합니다. 이는 두 컴퓨터 시스템이 인터넷을 통해 정보를 안전하게 교환하기 위한 인터페이스로 활용됩니다.

REST의 핵심 개념

REST는 API 설계 및 작동 방식에 대한 일련의 원칙을 정의하는 소프트웨어 아키텍처 스타일입니다. 주로 HTTP 프로토콜을 기반으로 하며, 클라이언트와 서버 간 상호작용을 단순화하고, 자원의 표현 방식을 규정합니다.

REST의 주요 원칙

1. 자원(Resource)

  • 모든 자원은 고유한 식별자(URI)를 가짐
  • URI를 통해 자원을 식별하고 상호작용 가능

2. 표현(Representation)

  • 자원은 JSON, XML 등 다양한 표현 방식으로 제공 가능
  • 클라이언트는 요청 시 원하는 데이터 형식을 지정할 수 있음

3. 상태 없음(Stateless)

  • 서버는 클라이언트의 상태를 저장하지 않음
  • 각 요청은 클라이언트가 필요한 모든 정보를 포함하여 독립적으로 처리됨
  • 서버 부담을 줄이고 확장성을 높이는 효과

4. 통합 인터페이스(Uniform Interface)

  • 일관된 인터페이스를 제공하여 클라이언트와 서버 간 상호작용을 표준화
  • API 구조를 단순화하고 유지보수를 쉽게 만듦

5. 계층화(Layered System)

  • 클라이언트는 서버와 직접적으로 통신하지만, 서버는 미들웨어, 데이터베이스 등을 통해 확장 가능
  • 클라이언트는 내부 시스템의 세부 사항을 알 필요 없음

RESTful API의 장점

직관적이고 간결한 인터페이스: API 사용이 쉽고 이해하기 쉬움
플랫폼 간 호환성: HTTP를 기반으로 하기 때문에 다양한 환경에서 사용 가능
고유한 URI: 명확한 자원 식별 및 관리가 용이
서버 확장성 향상: 클라이언트 상태를 저장하지 않으므로 서버 부담 감소
유연한 데이터 전송: JSON, XML 등의 다양한 데이터 형식을 지원하여 확장 용이

RESTful API 요청과 응답

📌 일반적인 HTTP 메서드

HTTP 메서드 요청 URI 설명 예시

GET /resources 모든 리소스 조회 /books
GET /resources/{id} 특정 리소스 조회 /books/123
POST /resources 새로운 리소스 생성 /books
PUT /resources/{id} 특정 리소스 업데이트 /books/123
DELETE /resources/{id} 특정 리소스 삭제 /books/123
GET /resources/{id}/subresource 하위 리소스 조회 /books/123/authors
POST /resources/{id}/subresource 새로운 하위 리소스 추가 /books/123/authors
PUT /resources/{id}/subresource 하위 리소스 업데이트 /books/123/authors/456
DELETE /resources/{id}/subresource 하위 리소스 삭제 /books/123/authors/456

📌 일반적인 HTTP 상태 코드

상태 코드 설명 예시

200 OK 요청이 성공적으로 처리됨 JSON 데이터
201 Created 새로운 리소스가 생성됨 JSON 데이터
204 No Content 리소스 삭제 또는 업데이트 완료 없음
400 Bad Request 잘못된 요청 {"error": "Message"}
401 Unauthorized 인증이 필요함 {"error": "Message"}
403 Forbidden 접근이 금지됨 {"error": "Message"}
404 Not Found 요청한 리소스를 찾을 수 없음 {"error": "Message"}
405 Method Not Allowed 지원되지 않는 HTTP 메서드 {"error": "Message"}
500 Internal Server Error 서버 내부 오류 발생 {"error": "Message"}

실전 RESTful API 예제

예를 들어, Express.js를 사용하여 간단한 RESTful API를 구현할 수 있습니다:

const express = require('express');
const app = express();
app.use(express.json());

// 모든 책 조회
app.get('/books', (req, res) => {
  res.json([{ id: 1, title: "RESTful API Guide" }, { id: 2, title: "Node.js Basics" }]);
});

// 특정 책 조회
app.get('/books/:id', (req, res) => {
  res.json({ id: req.params.id, title: "Sample Book" });
});

// 서버 실행
app.listen(3000, () => {
  console.log('Server running on port 3000');
});

이와 같이, RESTful API는 단순하면서도 강력한 구조를 가지고 있으며, 다양한 웹 애플리케이션에서 활용될 수 있습니다.

반응형