반응형
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는 단순하면서도 강력한 구조를 가지고 있으며, 다양한 웹 애플리케이션에서 활용될 수 있습니다.
반응형