⚡ 네트워크 - REST API
⚡ 네트워크 - REST API
🔹 REST API란?
Representational State Transfer
의 약자HTTP
기반의 자원 중심 아키텍처 스타일을 따르는 API 설계 방식URI
로 자원을 표현하고,HTTP
메서드로 자원에 대한 행위를 정의함
🔹 REST
의 구성 요소
구성 요소 | 설명 |
---|---|
자원(Resource ) | URI로 식별되는 대상 (예: /users/1 ) |
행위(Verb ) | HTTP 메서드 (GET , POST , PUT , DELETE 등) |
표현(Representation ) | 자원의 표현 방식 (예: JSON , XML 등) |
🔹 REST
의 6가지 아키텍처 제약 조건
- 클라이언트-서버 구조: 클라이언트와 서버는 서로 분리되어 독립적으로 동작해야 함
- 무상태성(
Stateless
): 요청 간 상태 정보를 서버가 저장하지 않음 - 캐시 처리 가능(
Cacheable
): 응답은 명시적으로 캐싱이 가능해야 함 - 계층화 구조(
Layered System
): 중간 서버(proxy
,gateway
등)를 통해 계층 구조를 이룰 수 있음 - 일관된 인터페이스(
Uniform Interface
):URI
,HTTP
메서드,MIME
타입 등으로 인터페이스를 일관되게 유지해야 함 - 코드 온 디맨드(
optional
): 필요한 경우 클라이언트에 스크립트를 다운로드해서 실행 가능
🔹 RESTful
한 URI
설계 원칙
기준 | 설명 | 예시 |
---|---|---|
명사 사용 | 자원은 명사로 표현 | /users , /articles/1 |
계층 표현 | URI는 계층적으로 설계 | /users/1/posts/3 |
CRUD 는 HTTP 메서드로 구분 | URI에 동사 사용 X | GET /users , POST /users |
복수형 사용 권장 | 컬렉션은 복수형 | /users , /products |
🔹 HTTP
메서드와 의미
메서드 | 설명 | 예시 |
---|---|---|
GET | 자원 조회 | GET /users/1 |
POST | 자원 생성 | POST /users |
PUT | 자원 전체 수정 (대체) | PUT /users/1 |
PATCH | 자원 부분 수정 | PATCH /users/1 |
DELETE | 자원 삭제 | DELETE /users/1 |
🔹 주요 HTTP
상태 코드
코드 | 의미 | 설명 |
---|---|---|
200 OK | 성공 | 요청이 정상적으로 처리됨 |
201 Created | 생성 성공 | POST 요청으로 자원이 생성됨 |
204 No Content | 삭제/수정 성공 | 응답 본문 없음 |
400 Bad Request | 잘못된 요청 | 필드 누락, 형식 오류 등 |
401 Unauthorized | 인증 실패 | 로그인 필요 |
403 Forbidden | 권한 없음 | 접근 권한 부족 |
404 Not Found | 자원 없음 | 존재하지 않는 URI |
500 Internal Server Error | 서버 오류 | 예기치 못한 오류 발생 |
🔹 REST API의 장점과 단점
▫️ 장점
HTTP
표준 기반으로 범용성, 확장성 우수- 클라이언트와 서버의 역할 분리 용이
- 캐시와 계층화를 통한 성능 최적화 가능
- 다양한 플랫폼과 언어에서 접근 가능
▫️ 단점
- 명확한 표준이 없고 구현에 따라 해석이 달라질 수 있음
- 복잡한 관계 표현이나 트랜잭션 처리에 한계
- 버전 관리와
URI
설계의 일관성 유지가 어려움
🔹 RESTful API
설계 시 주의점
URI
에는 동사 대신 명사 사용- 메서드 의미에 맞게 사용 (
GET
에 데이터를 생성하지 않음 등) PUT
은 전체 업데이트,PATCH
는 부분 업데이트- 에러 처리에 명확한 상태 코드와 메시지 제공
- 응답에 적절한
Content-Type
헤더 설정 (예:application/json
) - 버전 관리는
URI
(/v1/users
) 또는 헤더 방식으로 명시
🔹 REST
vs RESTful
REST
는 아키텍처 스타일 그 자체RESTful
은REST
원칙을 잘 따르고 있는 구현
🔹 정리
REST API
는HTTP
기반으로 자원을URI
로 표현하고, 그 자원에 대한 행위를HTTP
메서드(GET
,POST
,PUT
,DELETE
등)로 구분하는 아키텍처 스타일- 서버와 클라이언트를 분리하고, 무상태성을 유지하며, 일관된 인터페이스와 캐싱 같은 원칙을 따름
RESTful
한 설계는 명확하고 확장성이 뛰어나 다양한 시스템 간 통신에 많이 쓰임
This post is licensed under CC BY 4.0 by the author.