반응형
REST API란?
자원(Resource)을 정의하고, 그 자원을 처리하는 방식(HTTP Method)을 명확히 구분하여 클라이언트와 서버가
일관된 규칙으로 소통할 수 있도록 만든 아키텍처 스타일이다.
* REST = REpresentational State Transfer
* API = Application Programming Interface
REST API는 보통 HTTP 프로토콜을 기반으로 만들어지며, 브라우저, 앱, 프론트엔드와 백엔드 간의 데이터 교환에 널리 사용된다.
REST API의 특징
특징 | 설명 |
무상태성(Stateless) | 요청마다 상태를 유지하지 않음 (쿠키, 세션 X) |
자원 중심 | URL로 자원을 명확히 표현 |
일관된 규칙 | HTTP 메서드를 의미에 맞게 사용 |
클라이언트-서버 분리 | 프론트와 백엔드가 독립적으로 개발 가능 |
REST API 구성 요소
구성 요소 | 설명 |
자원 (Resource) | 정보를 표현하는 대상으로, URI를 통해 식별됨. (예: /users, /products) |
메서드 (Method) | 자원에 대한 동작을 정의 (예: GET, POST, PUT, DELETE) |
표현 (Representation) | 자원의 상태를 전달하는 형식, 대부분 JSON이나 XML로 표현됨 |
URI (Uniform Resource Identifier) | 자원을 식별하는 경로 (예: /users/1는 ID가 1인 유저를 의미) |
상태 코드 (HTTP Status Code) | 요청 처리 결과를 알려줌. (예: 200(성공), 404(없음), 500(서버오류) 등) |
REST API 설계 시 주의할 점 ⚠️
1. 자원 중심 URI 설계
- URI는 명사로 구성
- ❌ /getUserInfo, /deleteProduct
- ⭕️ /users, /products
2. HTTP 메서드를 의미에 맞게 사용
동작 | 메서드 | 설명 |
조회 | GET | 자원 가져오기 |
생성 | POST | 새 자원 추가 |
수정 | PUT | 자원 전체 수정 |
부분 수정 | PATCH | 자원 일부 수정 |
삭제 | DELETE | 자원 삭제 |
3. 일관된 응답 포맷 사용
{
"success": true,
"data": { ... },
"message": "요청에 성공했습니다"
}
4. 상태 코드 제대로 쓰기
코드 | 의미 | 비고 |
200 | OK | 요청 성공 |
201 | Created | 자원 생성됨 |
400 | Bad Request | 잘못된 요청 |
401 | Unauthorized | 인증 실패 |
404 | Not Found | 자원 없음 |
500 | Internal Server Error | 서버 오류 |
REST API에 대해 정리하다보니 문득 HTTP를 정리했을 때와 비슷한 느낌을 받았다.
그렇다면 REST API와 HTTP의 차이점은 뭘까?
HTTP와 REST API의 차이 요약
- HTTP = 통신 방법 자체 (전화기)
- REST API = HTTP를 "어떻게" 쓸지에 대한 규칙 (전화 예절)
HTTP와 REST API 비교
구분 | HTTP | REST API |
역할 | 웹에서 요청/응답을 주고받는 통신 규약 | HTTP를 기반으로 자원 중심의 API를 설계하는 방식 |
범위 | 더 넓음 (REST 말고도 SOAP, GraphQL 등 사용 가능) | 더 좁음 (HTTP 위에서 동작하는 방식 중 하나) |
개념 | 프로토콜 (어떻게 말할지의 기본 약속) | 아키텍처 스타일 (말할 때 어떤 형식으로 할지의 규칙) |
메서드 사용 | GET, POST, PUT, DELETE 등 제공만 함 | 이 메서드들을 "자원 중심"으로 알맞게 활용하도록 정의 |
[HTTP에 대해서 자세히 알고 싶다면 아래 글 참고!] ⤵️
[CS] HTTP(Hyper Text Transfer Protocol)란?
HTTP(Hyper Text Transfer Protocol)란? 웹에서 정보를 주고 받기 위한 프로토콜을 말하는데, 한마디로 웹 브라우저(클라이언트)와 서버가 데이터를 주고 받는 통신 방법이다.⚠️ 여기서 잠깐, 프로토
y-flm.tistory.com
반응형
'공부 > CS' 카테고리의 다른 글
[CS] 프론트엔드 성능 최적화 방법 알아보기 🔍 (0) | 2025.04.22 |
---|---|
[CS] MPA vs SPA (프론트엔드 구조 알아보기 🔍) (0) | 2025.04.18 |
[CS] CSR vs SSR vs SSG (웹 페이지 렌더링 방식 정리 🔍) (0) | 2025.04.16 |
[CS] 쿠키 vs 세션 vs 로컬 스토리지 (0) | 2025.04.15 |
[CS] HTTP(Hyper Text Transfer Protocol)란? (0) | 2025.04.14 |