[Backend] RESTful API

HAHAHELLO·2025년 3월 16일

CS

목록 보기
13/14

RESTful API

RESTful API가 무엇인지를 알기 위해서는 API에 대해 먼저 알아야 한다.

API란 Application Programmig Interface의 약자로 여러 프로그램이나 시스템이 서로 소통할 수 있도록 도와주는 일종의 규격이나 규칙을 말한다. 예를 들어 내가 스마트폰 앱에서 어떤 정보를 얻으려고 할 때, 그 앱은 API를 사용해 서버에 요청을 보낸다.

그럼 REST란 무엇일까?
기본적으로 REST자원의 상태를 표현하는 방식에 관한 규칙이다. 클라이언트가 요청을 보낼 때 HTTP 메소드를 사용하고, 요청한 자원의 상태(데이터)를 반환받는 방식이다.

결론적으로 RESTful API란?
이 용어는 REST의 원칙을 엄격히 따르는 API를 의미하는 경우가 많다. 즉, URL 구조, HTTP 메소드 사용 규칙 등을 정확히 REST의 원칙에 맞추어 설계한 API이다.

RESTful API는 JSON, XML, HTML, CSV, 텍스트 등 다양한 포맷으로 응답할 수 있고, 응답 형식은 주로 클라이언트가 요청할 때 설정한 Accept 헤더에 따라 달라진다. 예를 들어, 클라이언트가 applicaiotn/json을 요청하면 JSON 형식으로 응답을 받을 수 있다.

REST의 특징

1. 균일한 인터페이스(Uniform Iterface)

REST는 클라이언트와 서버 간의 상호작용을 위한 일관되고 균일한 인터페이스를 정의힌다. 예를 들어, HTTP 기반 REST API는 표준 HTTP 메서드(GET, POST, PUT, DELETE 등)와 URI(Uniform Resource Identifiers)를 사용하여 리소스를 식별한다.

2. 클라이언트-서버 구조 ient-Server)

사용자 인터페이스 문제(클라이언트)와 데이터 저장 문제(서버)를 분리하여 서로의 의존성을 없애야 한다.
클라이언트와 서버가 발전하더라도 클라이언트와 서버 간의 인터페이스/계약이 끊어지지 않도록 해야 한다.

3. 무상태성(Stateless)

상태 정보를 따로 저장하지 않으며, 이용자가 누구인지 혹은 어디서 접근하는지와 관계없이 결과가 항상 동일해야 한다.

4. 캐시 가능(Cacheable)

응답이 암시적 또는 명시적으로 캐시 가능 또는 불가능으로 표시해야 한다. 캐시가 가능한 경우 클라이언트 어플리케이션은 지정된 기간 동안 동일한 요청에 대해 나중에 응답 데이터를 재사용할 권한을 얻는다.

5. 계층 시스템(Layered System)

API는 REST 조건을 만족하면 필연적으로 오픈도리 수 밖에 없기 때문에 요청된 정보를 검색하는데 있어 계층 구조로 분리되어야 한다.

6. 자체 표현(Self-descriptiveness)

API를 통해 전송되는 내용은 별도 문서 없이 쉽게 이해할 수 있도록 자체 표현 구조를 지녀야 한다. 마찬가지로 웹 표준인 JSONrhk XML이 주로 사용된다.

RESTful API가 많이 쓰이는 이유

  • 간단하고 직관적: HTTP를 이용해서 데이터를 주고받기 때문에, 웹에서 쉽게 이해하고 사용할 수 있다.
  • 확장성: 여러 시스템과 장치들이 쉽게 연결될 수 있다. 예를 들어 내가 만든 앱에서 다른 사람의 서버에 저장된 데이터를 쉽게 가져올 수 있게 도와준다.
  • 표준화: 모든 RESTful API는 일정한 규칙을 따르므로, 한번 이해하면 다른 시스템에서도 쉽게 사용할 수 있다.

RESTful API의 특징

1. 자원(Resource)

즉 데이터를 의미한다. 예를 들어 사용자의 정보, 상품 목록, 게시글 등이 자원이 될 수 있다.

2. HTTP 메소드

API를 통해 자원을 가져옥나 수정하는 방법을 정의한다. 주로 사용되는 HTTP 메소드는 아래와 같다.

  • GET: 데이터를 가져올 때 사용
  • POST: 데이터를 새로 추가할 때 사용
  • PUT: 데이터를 수정할 때 사용
  • DELETE: 데이터를 삭제할 때 사용

3. URL

API는 URL을 통해 자원을 식별한다. 예를 들어 https://api.example.com/users는 사용자 목록을 가져오는 API일 수 있다.

참고
https://restfulapi.net/
https://stdio-han.tistory.com/88

profile
데이터 엔지니어가 되어 봅시다 🌈

0개의 댓글