본문 바로가기
네트워크

RESTful API

by kiwi_wiki 2025. 1. 23.
728x90
반응형

RESTful API?

REST(Representational State Transfer) 아키텍처 스타일을 따르는 API

HTTP 프로토콜을 기반으로 클라이언트와 서버 간의 통신을 설계하는 방식

원칙

  • 자원(URI)
    • 모든 자원은 고유한 URI로 식별됨
    • GET: 자원조회, GET /users/123
      POST: 자원생성, POST /users
      PUT: 자원전체수정, PUT /users/123
      PATCH: 자원부분수정, PATCH /users/123
      DELETE: 자원삭제, DELETE /users/123
  • 무상태성(Stateless)
    • 서버는 클라이언트의 상태를 저장하지 않음
    • 모든 요청은 독립적임
  • 캐싱(Caching)
    • HTTP 캐싱 헤더를 활용하여 응답 데이터를 클라이언트가 캐싱할 수 있도록 지원함
  • 일관된 인터페이스
    • API는 표준화된 방식으로 설계되어야 함

장점

  • 표준화된 설계: HTTP 표준을 기반으로 하여 클라이언트 서버 간의 상호작용이 직관적
  • 유연성: 다양한 클라이언트(웹, 모바일, IoT 등)에서 쉽게 사용 가능
  • 확장성: 자원을 계층적으로 분리하여 시스템 확장이 용이
  • 캐싱 지원: 네트워크 트래픽을 줄이고 성능을 최적화
  • 일관된 에러 응답
  • 버전 관리
  • 보안(HTTPS, 인증/인가)

GET, POST 차이

  • GET
    • 서버에서 데이터를 조회할 때 사용
    • 요청 데이터는 URL에  쿼리 문자열로 포함되며 브라우저의 캐시나 북마크가 가능
    • 보안 측면에서는 데이터가 URL에 노출되기 때문에 민감한 정보 전송에는 적합하지 않음
    • 같은 요청을 여러번 요청해도 같은 값을 응답 (멱등성 O)
  • POST
    • 데이터를 서버에 전송하거나 생성/업데이트 작업에 사용
    • 요청 데이터는 HTTP 요청의 본문에 담기며 URL에 나타나지 않음
    • 파일 업로드나 민감한 데이터 전송과 같은 작업에 적합
    • 같은 요청을 여러번 호출하면 새로운 리소스가 생성되거나 리소스의 상태가 달라져 호출 결과가 달라질 수 있음 (멱등성 X)
728x90
반응형

'네트워크' 카테고리의 다른 글

TCP/IP의 상태 모델 별 개발자 작업  (0) 2025.01.23
HTTP 1/2/3  (0) 2025.01.22
HTTP 헤더  (0) 2025.01.22
TCP 3-way handshake, 4-way handshake  (0) 2025.01.22
HTTP & HTTPS  (0) 2025.01.21