본문 바로가기

spring

HTTP / REST API

API (Application Programming Interface)
소프트웨어나 어플리케이션 간의 상호작용을 가능하게 하는 도구/규약들의 집합
한 프로그램이 다른 프로그램에 기능이나 서비스를 제공하거나 요청할 수 있도록 하는 인터페이스 제공
프로그램 간의 통신에 사용되는 언어/메시지 형태

 

≫ REST API : HTTP에서 REST한 방식을 따르는 API

 

 

HTTP (HyperText Transfer Protocol)
WWW에서 데이터를 주고 받기 위한 프로토콜
클라이언트와 서버 간에 통신을 가능하게 하며, 주로 웹 브라우저와 웹 서버 간의 데이터 교환에 사용됨

클라이언트-서버 모델 사용
  • 요청을 보내는 쪽 : 클라이언트
  • 요청을 받아 응답하는 쪽 : 서버
  • 클라이언트(웹 브라우저)가 서버에 요청을 보내고, 서버가 응답을 돌려주는 방식
비연결성 특징
  • 요청과 응답 후에는 클라이언트와 서버 간의 연결이 바로 끊김
  • 서버 부하 감소, 더 많은 클라이언트 처리 가능
  • 1대1이 아닌 N대N 구조 유지 가능
무상태성 (stateless) 유지
  • HTTP는 각 요청을 독립적으로 처리
  • 이전 요청 정보가 다음 요청에 영향을 미치지 않음
  • 상태 정보 유지는 쿠키나 세션을 통해 가능
HTTP 메서드 사용
  • CRUD에 각각 매핑하여 사용
  • REST API에서 HTTP 메서드를 사용하여 기능을 기술
    • CREATE : POST (데이터 제출)
    • READ : GET (데이터 요청)
    • UPDATE : PUT (데이터 저장/업데이트)
    • DELETE : DELETE
HTTP Status code로 상태 나타냄
  • 2XX : Successful
    • 200 OK
    • 201 Created
    • 202 Accepted
    • 204 No Content
  • 3XX : Redirect (리다이렉트)
  • 4XX : 클라이언트 오류
    • 400 Bad Request
    • 404 Not Found : 리소스를 찾을 수 없음
  • 5XX : 서버 오류
버전
  • 시간에 따라 발전 : HTTP/1.0, HTTP/1.1 → HTTP/2, HTTP/3

 

 

 

REST (REpresentational State Transfer)
자원을 이름으로 구분하여 상태(정보)를 주고 받는 것
REST의 기본 원칙을 잘 지킨 서비스 디자인 ≫ RESTful
REST 구성 요소
  • 자원 (Resources)
    • 모든 자원을 구별하는 고유한 ID : HTTP URI 
    • ex) /groups/:groups_id
  • 행위 (Verb)
    • HTTP Method
    • GET, POST, PUT, DELETE
  • 표현 (Representations)
    • 클라이언트가 자원의 상태에 대한 조작을 요청하면 서버는 적절한 응답을 보냄
    • 자원은 JSON, XML, TEXT 등의 여러 형태로 나타낼 수 있음

 

REST 특징
  • ServerClient 구조
  • Stateless무상태
  • Cacheable캐시 처리 가능
  • Layered System계층화
  • Uniform Interface인터페이스 일관성
  • CodeOnDemandOptional

 

 

REST API
REST API 설계 중심 규칙
  • URI은 정보의 자원을 표현
  • 자원에 대한 행위는 HTTP Method로 표현
    • 회원 정보를 가져오는 URL
      • GET /members/1
    • 회원 추가
      • POST /members/2

 

 

Client

(HTTP를 통해 요청을 보내는 쪽)

↓                         HTTP 메시지 : 를 통해 content를 담아서 요청/응답

↓                         (요청) ≫ RESTful API 방식을 통해서 데이터를 요청

↓                                        HTTP메소드(POST/PUT/GET/DELETE)를 통해 URI를 만들어서 보냄

↓                                        ex) GET /account  (= URI) (GET은 HTTP 메소드 / account는 자원 )

↓                         (응답) ≫ HTTP status code (2xx, 3xx, 4xx, 5xx ...)를 통해 요청 처리에 대한 응답

↓                                        응답에 관련된 정보들을 Body에 담아서 전달

↓                                        ex) GET에 대한 요청으로 account 정보들을 담아 전달

Server

(HTTP를 통해 응답하는 쪽)

 

 

 

 

 

'spring' 카테고리의 다른 글

타임리프(Thymeleaf)  (0) 2024.09.13
템플릿 엔진(Template Engine)  (0) 2024.09.13
Spring Bean / 생명주기  (0) 2024.06.14
MVC 패턴  (0) 2024.04.20
스프링 프레임워크 / Spring Boot  (1) 2024.04.19