REST

Weed·2024년 12월 29일
0

개발 기초 개념

목록 보기
4/5

REST란?

1️⃣ REST 개념

  • 네트워크 상에서 자원을 관리하고 상호작용하기 위한 아키택처 스타일
  • 주로 웹 애플리케이션 API 설계에 사용됨
  • 즉, 인터넷에서 데이터를 주고받는 방법이다.
  • 예를 들어, 웹사이트에서 필요한 정보를 가져오거나 데이터를 저장할 때 REST를 사용한다.

2️⃣ REST 주요 구성 요소

1. 리소스 (Resource)

  • 시스템 내의 모든 것을 자원으로 간주
  • 우리가 주고받는 데이터(예: 사용자 정보, 삼품 목록 등)를 말한다.
  • 각 자원은 고유한 URL로 식별됨 (예: https://api.example.com/users/123)

2. HTTP 메서드

  • 자원에 대한 작업을 지정하는 표준 HTTP 메서드
  • 즉, 데이터를 어떻게 처리할지 결정하는 명령어라고 생각하면 된다.
    • GET: 리소스 조회
    • POST: 새로운 리소스 생성
    • PUT: 기존 리소스 수정 or 교체
    • PATCH: 리소스 일부만 수정
    • DELETE: 리소스 삭제

3. 표현 (Representation)

  • 리소스는 JSON, XML 등 다양한 형식으로 표현 가능하다.
  • JSON이 가장 많이 사용된다.

4. URL (Uniform Resource Identifier)

3️⃣ REST 설계 원칙

1. 상태 비저장 (Stateless)

  • 서버는 클라이언트의 상태를 저장하지 않는다.
  • 각 요청은 독립적이며 필요한 정보를 포함해야 한다.

2. 클라이언트-서버 분리

  • 클라이언트와 서버는 서로 독립적으로 설게한다.
  • 클라이언트는 UI를 관리하고, 서버는 데이터 처리를 담당.

3. 캐시 가능 (Cacheable)

  • HTTP 캐싱을 활용하여 요청 응답 성능을 최적화
  • 자주 요청되는 데이터는 저장해서 빠르게 불러올 수 있다.

4. 계층화 (Layered System)

  • 중간 계층 (프록시, 로드 밸런서, 캐시 서버 등)을 통해 클라이언트-서버 간 통신 가능

5. 통일된 인터페이스

  • 자원의 엑세스 방식이 일관되어야 함

4️⃣ REST 장점 / 단점

1. 장점

  • 간단하고 직관적: HTTP 기반으로 이해하기 쉬움
  • 확장성: 클라이언트와 서버가 독립적으로 확장 가능
  • 캐싱 가능: HTTP 캐시로 성능 최적화
  • 호환성: 다양한 플랫폼에서 사용 가능

2. 단점

  • 상태 비저장 설계로 인해 클라이언트가 요청 데이터를 반복적으로 전송해야 함
  • 복잡한 쿼리 처리에는 REST보다 GraphQL이 더 적합할 수 있음
  • 대규모 데이터 처리나 배치 작업에는 적합하지 않음

5️⃣ REST와 다른 기술 비교

  • SOAP: 더 구조화된 프로토콜, 보안 및 트랜잭션 관리에 강점
  • GraphQL: 유연하고 단일 요청에서 여러 리소스를 조회 가능

✅ REST 활용 상황

영화 정보를 보여주는 앱

당신은 영화 정보를 제공하는 앱을 개발하고 있다고 가정한다.
이 앱에서는 사용자들이 최신 영화 목록과 특정 영화의 세부 정보를 확인할 수 있어야 한다.

REST를 이용해 데이터를 주고받는 과정

1. 사용자가 앱에서 최신 영화 목록을 보려고 한다.

  • 앱이 REST API의 GET 요청을 보낸다.
//plaintext

GET https://api.movies.com/latest
  • 서버는 최신 영화 목록 데이터를 JSON 형식으로 반환한다.
// JSON

[
  { "id": 1, "title": "The Great Adventure", "year": 2023 },
  { "id": 2, "title": "Mystery Night", "year": 2023 }
]
  • 앱은 이 데이터를 화면에 보여준다.

2. 사용자가 특정 영화의 상세 정보를 보려고 한다.

  • 앱이 REST API의 또 다른 GET 요청을 보낸다.
//plaintext

GET https://api.movies.com/movies/1
  • 서버는 ID가 1인 영화의 상세 정보를 반환한다.
// JSON

{
  "id": 1,
  "title": "The Great Adventure",
  "year": 2023,
  "genre": "Adventure",
  "rating": 4.7
}
  • 앱은 이 정보를 상세 화면에 보여준다.

3. 사용자가 새로운 영화를 추가하려고 하낟.

  • 앱이 REST API의 POST 요청을 보낸다.
//plaintext

POST https://api.movies.com/movies
Content-Type: application/json
  • 요청 본문에는 새로운 영화 정보가 들어간다.
// JSON

{
  "title": "New Blockbuster",
  "year": 2024,
  "genre": "Action"
}
  • 서버는 새로운 영화가 성공적으로 추가되었음을 알리고, 새 영화의 ID를 반환한다.
// JSON

{ "id": 3, "message": "Movie added successfully." }

REST의 역할

  • REST는 이렇게 앱(클라이언트)서버가 서로 데이터를 주고받는 역할을한다.
  • 서버는 데이터를 제공하거나 처리하고, 앱은 그 데이터를 사용자에게 보여주거나 활용한다.

중요한 점

  • URL로 리소스(데이터)를 명확히 구분할 수 있다.
  • HTTP 메서드로 데이터 처리 방식을 표현한다.
    (GET: 조회, POST: 생성, PUT: 수정, DELETE: 삭제)
  • 데이터는 주로 JSON 형식으로 주고받아서 가볍고 읽기 쉽다.
profile
개발자로 전직해보자

0개의 댓글