Link
Notice
HIT해
[CS] REST API 본문
728x90
REST API란?
REST API는 REST 아키텍처 스타일을 따르는 웹 API
REST란?
REST (Representational State Transfer) 는 자원을 URI로 식별하고,
HTTP 메서드(GET, POST, PUT, DELETE 등)로 자원에 대한 행위를 정의한다.
정리하자면 HTTP URI 를 통해 자원을 명시하고,HTTP Method 를 통해 해당 자원(URL)에 대한 CRUD Operation을 적용하는 것을 의미한다.
REST 구성요소
1. 자원 : URL
2. 향위 ( Verb ) : HTTP Method ( 자원 요청 방법 )
3. 자원에 대한 행위의 내용 : HTTP Message Pay Load
REST의 특징
- 클라이언트-서버 구조: 서버와 클라이언트가 명확히 분리되어 독립적으로 개발·확장 가능
- 무상태성(Stateless): 각 요청은 독립적으로 처리, 서버가 이전 요청의 상태를 저장하지 않음
- 캐시 처리 가능: HTTP 캐시 기능을 그대로 활용하여 효율적인 데이터 전송
- 계층화(Layered System): 프록시, 로드밸런서 등 중간 계층 추가가 용이
- 인터페이스 일관성(Uniform Interface): 표준화된 URI와 HTTP 메서드 사용, 명확한 규칙
- 자체 표현(Self-descriptive): 메시지 자체에 필요한 정보를 모두 포함
- 다양한 데이터 형식 지원: JSON, XML, 텍스트 등 다양한 포맷 사용 가능
*상태란? 어떤 객체, 시스템, 혹읜 자원의 현재 상황이나 조건을 의미한다.
쉽게 말해, 지금 이 순간에 어떠 값이나 정보가 저장되어 있는가?
REST에서 말하는 무상태란
서버가 클라이언트의 이전 요청에 대한 상태 정보를 저장하지 않는다는 뜻.
각 요청은 독립적으로 처리되고, 요청에 필요한 모든 정보는 상태는 클라이언트가 직접 포함해서 보내야한다.
상태 저장 방식 : 서버가 로그인 정보를 세션으로 저장 -> 상태가 서버를 기억
무상태 방식 : 매 요청마다 JWT를 함께 전송
REST API 설계 원칙
- URI는 동사 대신 명사 사용 (
/users
O,/getUsers
X) - HTTP 메서드로 동작 표현 (GET, POST, PUT, DELETE 등)
- 언더바 대신 하이픈(-) 사용 권장
- HTTP 상태 코드(200, 201, 400, 404, 500 등) 활용
- 응답 데이터는 주로 JSON 형식
- 버전 관리는 URI에 버전 번호 포함 (
/v1/users
) - 마지막에 슬래시를 포함하지 않는다.
- 파일 확장자는 URL에 미포함 ex) /photo.jpg (x)
REST API | 비 REST | SOAP API | GraphQL | |
설계 원칙 | HTTP 표전, 자원중심, 무상태성, 일관성 | 프로토콜/ 구조에 제한 없음 | 엄격한 프로토콜, XML기반, WSDL 계약 필요 | 쿼리 기반, 스키마 필요 |
데이터 포맷 | JSON, XML, 텍스트 | 다양 | XML | JSON |
메서드 | HTTP 메서드 | 제한 없음 | 주로 POST | POST |
특징 | 가볍고 빠름, 인프라 활요 | 제약이 적고 세션 의존이 가능 | 무겁고 느림, 보안/트랜잭션등 강력한 내장 긴능 | 원하는 데이터만 선택 가능 |
데이터 반환 | 엔드 포인트마다 고정 | 다양 | 고정 | 한 엔드포인트, 유연한 반환 |
과다/과소 데이터 | 발생 가능 | 다양 | 고정 | 해결가능 |
REST API의 장단점
장점
- HTTP 프로토콜의 인프라를 그대로 사용하므로 REST API 사용을 위한 별도의 인프라를 구출할 필요가 없다.
- HTTP 프로토콜의 표준을 최대한 활용하여 여러 추가적인 장점을 함께 가져갈 수 있게 해 준다.
- HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능하다.
- Hypermedia API의 기본을 충실히 지키면서 범용성을 보장한다.
- REST API 메시지가 의도하는 바를 명확하게 나타내므로 의도하는 바를 쉽게 파악할 수 있다.
- 여러 가지 서비스 디자인에서 생길 수 있는 문제를 최소화한다.
- 서버와 클라이언트의 역할을 명확하게 분리한다.
단점
- 엄격한 표준이 없어 설계 가이드가 필요하다
- HTTP 메서드, 상태 코드 등 웹 기술에 대한 이해 필요
- 복잡한 트랜잭션, 고급 보안 등은 SOAP에 비해 약할 수 있음
- 과다/과소 데이터 전달 문제(엔드포인트 설계에 따라 발생)
REST API 예시
GET /users // 사용자 목록 조회
POST /users // 사용자 생성
GET /users/123 // 특정 사용자 조회
PUT /users/123 // 특정 사용자 전체 수정
PATCH /users/123 // 특정 사용자 부분 수정
DELETE /users/123 // 특정 사용자 삭제
포스팅에 도움을 준 사이트 : http://www.ktword.co.kr/abbr_view.php?nav=2&m_temp1=648&id=1283
'CS' 카테고리의 다른 글
[CS] 웹 프로토콜 (1) | 2025.05.30 |
---|---|
[CS] 암호 Cypher (0) | 2025.05.29 |
[CS] OSI 7계층 (0) | 2025.05.26 |
단방향 vs 양방향 데이터 흐름 정리 (0) | 2025.05.25 |
[CS] HTTP 상태코드와 에러 핸들링 (0) | 2025.05.20 |