REST API 이해하기: HTTP 메서드와 REST API

JHLee·2025년 4월 12일

Springboot

목록 보기
4/6
post-thumbnail

이 글에서는 HTTP 메서드와 REST API 개념을 정리해보겠습니다.
📖 참고 자료: 《코딩 자율학습 스프링 부트 3 자바 백엔드 개발 입문》

1. HTTP 메서드란?

HTTP 메서드

  • 프로토콜(Protocol) : 컴퓨터 간 원활한 통신을 위한 전 세계 표준으로, 신호 처리 방식, 오류처리, 암호화, 인증방식 등을 규정합니다.
  • HTTP(HyperText Transfer Protocol) : 웹에서 데이터를 주고받을 때 사용하는 프로토콜로, 클라이언트의 다양한 요청을 메서드를 통해 서버로 보내는 역할을 합니다.
  • 대표적인 HTTP 메서드는 다음과 같습니다.
    - POST : 데이터 생성 요청
    - GET : 데이터 조회 요청
    - PATCH(PUT) : 데이터 수정 요청
    - DELETE : 데이터 삭제 요청

HTTP 상태 코드

클라이언트가 보낸 요청이 성공했는지 실패했는지 알려 주는 코드입니다. 상태 코드는 100~500번대까지 5개 그룹으로 나뉩니다.

상태 코드설명
1XX(정보)요청이 수신돼 처리 중입니다.
2XX(성공)요청이 정상적으로 처리됐습니다.
3XX(리다이렉션 메시지)요청을 완료하려면 추가 행동이 필요합니다.
4XX(클라이언트 요청 오류)클라이언트의 요청이 잘못돼 서버가 요청을 수행할 수 없습니다.
5XX(서버 응답 오류)서버 내부에 에러가 발생해 클라이언트 요청에 대해 적절히 수행하지 못했습니다.

HTTP 메시지 구성

HTTP 요청과 응답은 다음과 같은 요소로 구성됩니다.

  • 시작 라인 : HTTP 요청 또는 응답 내용이 있습니다.
  • 헤더 : HTTP 전송에 필요한 부가 정보(metadata)를 포함합니다.
  • 빈 라인 : 헤더의 끝을 알리는 빈 줄로, 헤더가 모두 전송되었음을 알립니다.
  • 본문 : 실제 전송하는 데이터가 있습니다. (JSON, HTML, XML 등)

2. REST API란?

REST와 API의 개념

  • REST(Representational State Transfer) : HTTP URL을 통해 서버의 자원(resource)을 명시하고, HTTP 메서드(POST, GET, PATCH/PUT, DELETE)를 이용해 해당 자원에 CRUD 작업을 수행하는 방식을 말합니다.
  • API(Application Programming Interface) : 클라이언트가 서버의 자원을 요청할 수 있도록 제공하는 인터페이스입니다.
  • REST API : REST 원칙을 기반으로 설계된 API로, 다양한 클라이언트(웹, 모바일, IoT 등)에서 서버의 데이터를 쉽게 주고받을 수 있도록 합니다.

REST API의 특징

  1. 클라이언트-서버 구조: 클라이언트와 서버가 서로 독립적으로 동작하며, 서버는 데이터를 제공하는 역할을 합니다.
  2. 무상태(Stateless): 서버는 요청 간의 상태를 저장하지 않으며, 각 요청은 독립적으로 처리됩니다.
  3. 캐시 가능(Cacheable): 클라이언트는 응답 데이터를 캐싱하여 성능을 최적화할 수 있습니다.
  4. 계층적 구조: 클라이언트와 서버 사이에 프록시, 게이트웨이 등의 중간 계층을 둘 수 있습니다.
  5. 인터페이스 일관성(Uniform Interface): API 설계가 일관되며, URI와 HTTP 메서드를 활용한 명확한 규칙이 있습니다.

REST API의 응답

  • REST API는 주로 JSON 형식으로 데이터를 주고받습니다.
  • JSON 데이터 : 자바스크립트 방식을 차용한 객체 표현식으로, 키와 값의 쌍으로 이루어진 속성의 집합입니다. 형식은 다음과 같습니다.
{
	"key1":"value1",
    "key2":"value2"
}

3. REST API의 동작 과정

REST API가 동작하는 흐름을 간단한 예제와 함께 살펴보겠습니다.

3-1. 클라이언트가 서버에 요청을 보내는 과정

  1. 사용자 요청: 클라이언트가 특정 자원에 대한 요청을 보냅니다.
  2. 서버 처리: 서버가 요청을 받아 해당 데이터를 조회하거나 조작합니다.
  3. 응답 반환: 서버는 요청 결과를 JSON 형식으로 반환합니다.
  • 예제: 사용자 목록 조회(GET 요청)

  • 요청

GET /users HTTP/1.1
Host: api.example.com
  • 응답
[
    { "id": 1, "name": "홍길동", "email": "gildong@example.com" },
    { "id": 2, "name": "이순신", "email": "soonshin@example.com" }
]

3-2. RESTful URI 설계 원칙

REST API는 명확하고 일관된 URI를 사용하는 것이 중요합니다.

기능예시
사용자 목록 조회GET /users
특정 사용자 조회GET /users/{id}
사용자 생성POST /users
사용자 수정PATCH /users/{id}
사용자 삭제DELETE /users/{id}

이러한 RESTful URI 설계를 따름으로써 API 사용이 직관적이고 예측 가능해집니다.


4. REST API 보안

REST API를 안전하게 사용하기 위해 다음과 같은 보안 기법을 적용할 수 있습니다.

4-1. 인증과 권한 관리

  • JWT(JSON Web Token): 토큰 기반 인증 방식으로, 사용자의 인증 정보를 포함한 토큰을 발급하여 API 요청 시 활용
  • OAuth 2.0: 사용자 권한을 관리하는 표준 프로토콜로, Google, Facebook 등의 서비스에서 널리 사용됨

4-2. 데이터 암호화

  • HTTPS 사용: 데이터를 암호화하여 보안을 강화
  • API 키 및 토큰 사용: 인증된 사용자만 API를 사용할 수 있도록 제한

4-3. 요청 제한 및 로깅

  • Rate Limiting: 특정 시간 내 요청 횟수를 제한하여 API 남용 방지
  • 로깅 및 모니터링: API 요청 및 응답을 기록하여 보안 위협을 감지
profile
개발자로 성장하기

0개의 댓글