
REST, REST API, RESTful에 대한 정의와 특징
API(Application Programming Interface)는 소프트웨어 시스템 간에 기능이나 데이터를 주고받을 수 있도록 정해진 규칙, 명령, 프로토콜을 제공하는 인터페이스
| 용어 | 설명 | 추가정보 / 예시 |
|---|---|---|
| Client | 웹에서 정보에 액세스하려는 사용자 | 사용자는 웹 브라우저, 앱 등 다양한 클라이언트로 서버에 요청을 보냄 |
| Server(서버) | 클라이언트에 리소스를 제공하는 시스템 | 클라이언트 요청을 받아 리소스를 전달하거나 조작하는 역할을 담당 |
| Resource(리소스) | 클라이언트에게 제공하는 정보 | REST에서 서버가 관리하는 모든 데이터 또는 객체 (예: 문서, 사진, DB 내용 등) |
REST(Representational State Transfer)는 웹에서 자원의 상태를 표현(Representation)하여 전송(Transfer)하는 아키텍처 스타일
| 특징 | 설명 |
|---|---|
| Uniform Interface | URI로 리소스를 식별하고, HTTP 표준 방식으로 조작한다. |
| Stateless | 서버는 클라이언트의 상태를 따로 저장하지 않고, 각 요청은 독립적으로 처리 |
| Cacheable | HTTP 표준 캐싱 기능을 활용하여 성능을 높일 수 있음 |
| Client-Server 구조 | 클라이언트와 서버의 역할이 명확히 분리되어 의존성이 줄어듦 |
| Layered System | 중간 서버(프록시, 게이트웨이 등)을 둘 수 있어 유연성이 높아짐 |
| Self-descriptiveness | 메시지 자체에 필요한 정보를 포함하기 때문에 별도의 description없이 이해 가능 |
/members/1 (O), Member/1 (X)GET, POST, PUT, DELETE 등GET /members/1 (O), GET /members/delete/1(X)/users/123/devices (O), /users/123/devices/ (X)/user-groups (O), /user_groups (X)/users (O), /Users.json (X)/users 라는 URI로 사용자 리소스를 나타내고, 다양한 HTTP 메서드를 적용 가능함| HTTP Method | URI | 설명 |
|---|---|---|
| GET | /users | 클라이언트는 GET을 사용하여 서버의 지정된 URL에 있는 리소스에 액세스한다. (users의 모든 사용자 조회) |
| GET | /users/{id} | 특정 사용자 조회한다. (users group의 id값에 따른) |
| POST | /users | 클라이언트는 POST를 사용하여 서버에 데이터를 전송(새로운 사용자 추가) |
| PUT | /users/{id} | 클라이언트는 PUT을 사용하여 서버의 기존 리소스를 업데이트 (users group의 새로운 사용자 추가) |
| DELETE | /users/{id} | 클라이언트는 DELETE 요청을 사용하여 리소스를 제거(사용자 삭제) |
Create: 데이터 생성 (Post)
Read: 데이터 조회 (GET)
Update: 데이터 수정 (PUT, PATCH)
Delete: 데이터 삭제 (DELETE)
/users/123/devices는 “123번 사용자”의 “devices”라는 하위 리소스를 의미/api/items와 /api/items/는 엄밀히 따지면 서로 다른 URI이며, 다르게 인식될 수 있다