반응형

 

REST API란?

    자원(Resource)을 정의하고, 그 자원을 처리하는 방식(HTTP Method)을 명확히 구분하여 클라이언트와 서버가

     일관된 규칙으로 소통할 수 있도록 만든 아키텍처 스타일이다.

     * REST = REpresentational State Transfer

     * API = Application Programming Interface

    REST API는 보통 HTTP 프로토콜을 기반으로 만들어지며, 브라우저, 앱, 프론트엔드와 백엔드 간의 데이터 교환에 널리 사용된다.


REST API의 특징
특징 설명
무상태성(Stateless) 요청마다 상태를 유지하지 않음 (쿠키, 세션 X)
자원 중심 URL로 자원을 명확히 표현
일관된 규칙 HTTP 메서드를 의미에 맞게 사용
클라이언트-서버 분리 프론트와 백엔드가 독립적으로 개발 가능

REST API 구성 요소
구성 요소 설명
자원 (Resource) 정보를 표현하는 대상으로, URI를 통해 식별됨. (예: /users, /products)
메서드 (Method) 자원에 대한 동작을 정의 (예: GET, POST, PUT, DELETE)
표현 (Representation) 자원의 상태를 전달하는 형식, 대부분 JSON이나 XML로 표현됨
URI (Uniform Resource Identifier) 자원을 식별하는 경로 (예: /users/1는 ID가 1인 유저를 의미)
상태 코드 (HTTP Status Code) 요청 처리 결과를 알려줌. (예: 200(성공), 404(없음), 500(서버오류) 등)

REST API 설계 시 주의할 점 ⚠️

 

1. 자원 중심 URI 설계

  • URI는 명사로 구성
  • ❌  /getUserInfo, /deleteProduct
  • ⭕️  /users, /products

 

2. HTTP 메서드를 의미에 맞게 사용

동작 메서드 설명
조회 GET 자원 가져오기
생성 POST 새 자원 추가
수정 PUT 자원 전체 수정
부분 수정 PATCH 자원 일부 수정
삭제 DELETE 자원 삭제

 

3. 일관된 응답 포맷 사용

{
  "success": true,
  "data": { ... },
  "message": "요청에 성공했습니다"
}

 

4. 상태 코드 제대로 쓰기

코드 의미 비고
200 OK 요청 성공
201 Created 자원 생성됨
400 Bad Request 잘못된 요청
401 Unauthorized 인증 실패
404 Not Found 자원 없음
500 Internal Server Error 서버 오류

REST API에 대해 정리하다보니 문득 HTTP를 정리했을 때와 비슷한 느낌을 받았다.

그렇다면 REST API와 HTTP의 차이점은 뭘까?


HTTP와 REST API의 차이 요약

 

  • HTTP = 통신 방법 자체 (전화기)
  • REST API = HTTP를 "어떻게" 쓸지에 대한 규칙 (전화 예절)

 


HTTP와 REST API 비교
구분 HTTP REST API
역할 웹에서 요청/응답을 주고받는 통신 규약 HTTP를 기반으로 자원 중심의 API를 설계하는 방식
범위 더 넓음 (REST 말고도 SOAP, GraphQL 등 사용 가능) 더 좁음 (HTTP 위에서 동작하는 방식 중 하나)
개념 프로토콜 (어떻게 말할지의 기본 약속) 아키텍처 스타일 (말할 때 어떤 형식으로 할지의 규칙)
메서드 사용 GET, POST, PUT, DELETE 등 제공만 함 이 메서드들을 "자원 중심"으로 알맞게 활용하도록 정의

[HTTP에 대해서 자세히 알고 싶다면 아래 글 참고!] ⤵️

https://y-flm.tistory.com/81

 

[CS] HTTP(Hyper Text Transfer Protocol)란?

HTTP(Hyper Text Transfer Protocol)란?    웹에서 정보를 주고 받기 위한 프로토콜을 말하는데, 한마디로 웹 브라우저(클라이언트)와 서버가 데이터를 주고 받는 통신 방법이다.⚠️ 여기서 잠깐, 프로토

y-flm.tistory.com

 

반응형

+ Recent posts