REST API의 기본 개념
리소스(Resource)
- 데이터나 기능을 의미함
- 예: /users, /posts/1, /products/4
HTTP 메서드(Method)로 동작을 구분
- GET: 데이터 조회
- POST: 데이터 생성
- PUT 또는 PATCH: 데이터 수정
- DELETE: 데이터 삭제
URL 설계는 명사 중심
- 예: GET /users → 사용자 목록 가져오기
- 예: POST /users → 사용자 생성
무상태성(Stateless)
- 서버는 이전 요청 상태를 기억하지 않음
- 모든 요청은 독립적
- 라이언트 요청에 필요한 모든 정보가 포함되어 있어야 함 (세션 X)
JSON을 주로 사용
- 요청이나 응답에서 데이터를 표현할 때 JSON 형식이 보편적
에러와 응답은 명확한 상태 코드 사용
- 예: 200 OK, 201 Created, 400 Bad Request, 404 Not Found 등
사용 예시
| HTTP Method | URL | 설명 |
| GET | /users | 모든 사용자 조회 |
| GET | /users/1 | ID가 1인 사용자 조회 |
| POST | /users | 새 사용자 생성 |
| PUT | /users/1 | ID가 1인 사용자 수정 |
| DELETE | /users/1 | ID가 1인 사용자 삭제 |
REST API의 장점
- URL만으로 기능이 명확해짐
- HTTP 규칙을 그대로 사용하므로 구현이 쉬움
- 다양한 언어/플랫폼과 연동이 쉬움
REST가 사용되는 대표적인 환경
🌐 프론트엔드
- React, Vue, Angular 등에서 fetch, axios 등을 통해 REST API 호출
- 모바일 앱(iOS/Android)도 REST API로 백엔드와 통신
💻 백엔드 프레임워크들
| 언어 | 프레임워크 (REST 지원) |
| Python | Flask, Django REST Framework |
| Node.js | Express.js, NestJS |
| Ruby | Ruby on Rails (RESTful routing 내장) |
| Go | Gin, Echo, Fiber |
| PHP | Laravel, Symfony |
| Java | Spring Boot, Jakarta EE 등 |
| .NET | ASP.NET Core Web API |
☁️ 클라우드/서버리스 환경
- AWS API Gateway + Lambda
- GCP Cloud Functions
- Azure Functions
→ 전부 REST 기반 API를 쉽게 구축 가능
RPC(Remote Procedure Call) API의 기본 개념
개념
- URL이 "자원을 지정"하는 것이 아니라, "무엇을 할지"를 말함
- 마치 함수 호출처럼 보이기 때문에 RPC 방식이라고 부름
URL 설계는 동사 중심
- 함수 이름이 URL에 표현됨
- HTTP 메서드는 거의 POST만 쓰는 경우가 많음
사용 예시
| HTTP Method | URL | 설명 |
| POST | /createUser | 사용자 생성 |
| GET | /getUserById?id=1 | 사용자 조회 |
| POST | /deleteUser | 사용자 삭제 |
RPC가 사용되는 대표적인 환경
🧩 마이크로서비스 간 통신
- 성능과 속도를 중요시하는 내부 통신에서 RPC 많이 사용
- 특히 **gRPC (Google의 RPC 프레임워크)**가 매우 널리 사용됨
- Protocol Buffers 기반 (JSON보다 작고 빠름)
- HTTP/2 기반 스트리밍 지원
🧠 AI/ML 시스템 내부 통신
- 대규모 모델 호출이나 데이터 처리 시 RPC 사용
- 예: TensorFlow Serving, Apache Thrift
💼 기업 시스템, 레거시 시스템
- 오래된 SOAP (XML-RPC 기반) 방식도 일종의 RPC
- Java RMI, .NET Remoting, CORBA 등
REST vs RPC
| 비교 항목 | RESTful API | RPC 스타일 API |
| URL 구조 | 자원 중심 (/users) | 동사 중심 (/createUser) |
| HTTP 메서드 사용 | 의미에 맞게 구분 사용 | 거의 POST만 사용하거나 의미 없음 |
| 확장성/유지보수성 | 높음 | 낮음 |
| 자동 문서화 등 도구 지원 | 매우 활발함 | 제한적일 수 있음 |
| 데이터 포맷 | 주로 JSON | 주로 ProtoBuf (또는 custom) |
| 사용 용도 | 공개 API, 웹 서비스 등 | 내부 통신, 성능 민감 서비스 |
| 예시 환경 | 모바일/웹 백엔드 등 | MSA 내부, AI 시스템 등 |
반응형
'CS' 카테고리의 다른 글
| 이클립스 로고 멈춤 무한로딩 해결 방법 5가지 (0) | 2025.06.18 |
|---|