1.REST API
REST (Representational State Transfer) 원칙을 따르는 애플리케이션 프로그래밍 인터페이스(API)
2.REST API 구성요소
2-1.자원(Resource)
자원은 URI로 식별된다.
ex)사용자 자원은 /users로 식별한다.
2-2.HTTP 메서드
GET: 자원의 조회
POST: 새로운 자원의 생성
PUT: 기존 자원의 전체 수정
PATCH: 기존 자원의 부분 수정
DELETE: 자원의 삭제
2-3.헤더(Headers)
HTTP 요청과 응답에 추가 정보를 제공한다.
ex)Content-Type 헤더는 요청이나 응답의 데이터 형식을 지정
2-4.상태 코드(Status Codes)
요청의 결과를 나타내는 코드
2xx: 성공 (예: 200 OK, 201 Created)
3xx: 리다이렉션 (예: 301 Moved Permanently, 302 Found)
4xx: 클라이언트 오류 (예: 400 Bad Request, 401 Unauthorized, 404 Not Found)
5xx: 서버 오류 (예: 500 Internal Server Error, 503 Service Unavailable)
3.REST의 핵심 원칙
3-1.무상태성 (Statelessness)
RESTful 서비스는 무상태(stateless)이어야 한다.
이는 각 클라이언트 요청이 완전한 상태여야 하며, 서버는 이전 요청의 상태를 유지하지 않는다는 의미이다.
클라이언트 요청에 필요한 모든 정보가 포함되어 있어야 하고
서버는 각 요청을 독립적으로 처리하며, 이전 요청의 컨텍스트를 기억하지 않는다.
무상태성은 서버가 클라이언트의 상태를 저장하지 않고, 각 요청이 독립적으로 처리되는 방식을 의미한다.
이를 통해 시스템의 확장성과 성능을 높일 수 있다.
3-2. 클라이언트-서버 구조 (Client-Server Architecture)
클라이언트와 서버는 서로 분리된 독립적인 엔터티이다.
클라이언트는 사용자 인터페이스와 사용자 경험을 담당하며, 서버는 데이터 저장 및 비즈니스 로직을 처리한다.
클라이언트와 서버를 독립적으로 개발, 배포, 확장할 수 있다.
서버는 다양한 클라이언트(웹, 모바일, 데스크탑)에 데이터를 제공할 수 있다.
ex)웹 브라우저(클라이언트)는 서버에 요청을 보내고, 서버는 데이터베이스에서 데이터를 조회하여 응답을 반환합니다. 클라이언트는 이 데이터를 사용자에게 표시한다.
3-3.캐시 처리 가능 (Cacheable)
응답은 캐시될 수 있어야한다.
서버는 각 응답에 대해 캐싱이 가능한지 여부를 명시해야 한다.
캐시 제어 메커니즘(HTTP 헤더)을 사용하여 클라이언트와 중간 프록시 서버가 응답을 캐시하고,
이를 통해 동일한 요청을 처리할 때 서버의 부하를 줄일 수 있다.
ex)서버가 정적 리소스(예: 이미지, CSS 파일)를 제공할 때, Cache-Control 헤더를 사용하여 클라이언트가 이러한 리소스를 일정 시간 동안 캐시할 수 있도록한다.
3-4.계층화 시스템 (Layered System)
클라이언트는 서버와 직접적으로 통신하지 않을 수도 있으며,여러 계층을 통해 통신할 수 있다.
이러한 계층은 보안, 로드 밸런싱, 캐싱 등을 담당할 수 있다.
시스템의 모듈화와 확장성이 향상된다.
보안 계층과 로드 밸런싱 계층을 추가하여 시스템의 안정성과 성능을 개선할 수 있다.
3-5.인터페이스 일관성 (Uniform Interface)
REST API는 일관된 인터페이스를 제공하여 클라이언트와 서버 간의 상호작용을 단순화한다.
이를 통해 개발자는 API의 사용 방법을 쉽게 이해할 수 있다.
URI(Uniform Resource Identifier)를 통해 자원을 식별하고,
HTTP 표준 메서드(GET, POST, PUT, DELETE)를 사용하여 자원에 대한 작업을 수행한다.
ex)각 자원은 고유한 URI를 가지며, 클라이언트는 HTTP 메서드를 사용하여 해당 자원에 접근하거나 조작한다.
GET /users/1은 ID가 1인 사용자를 조회하고, DELETE /users/1은 해당 사용자를 삭제한다.
3-6.표현의 독립성 (Representation Independence)
클라이언트와 서버는 데이터의 표현 방식에서 독립적이다.
클라이언트는 필요한 데이터를 원하는 형식으로 요청하고 받을 수 있다.
서버는 동일한 데이터를 여러 형식(JSON, XML 등)으로 제공할 수 있으며,
클라이언트는 필요한 형식을 선택할 수 있다.
ex)클라이언트는 Accept 헤더를 사용하여 서버에 원하는 응답 형식을 요청한다.
서버는 클라이언트의 요청에 따라 JSON 또는 XML 형식으로 데이터를 반환할 수 있다.
'BackEnd > SpringBoot' 카테고리의 다른 글
[Spring Boot] 포스트맨(Postman) 사용하기 (0) | 2024.07.09 |
---|---|
[Spring Boot] 검색기능 (0) | 2024.07.08 |
[Spring Boot] 추천 기능 (0) | 2024.07.08 |