HIT해

[CS] REST API 본문

CS

[CS] REST API

힛해 2025. 5. 27. 09:58
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