REST (Representational State Transfer) API는 웹 개발에서 가장 인기 있는 API 중 하나입니다.
RESTful API는 클라이언트-서버 모델에서 자원을 다루는 방식으로, HTTP 프로토콜을 기반으로 동작합니다.

REST API의 구성 요소에는 자원(Resource), 메소드(Method), 메시지(Message), URI(Uniform Resource Identifier)이 있습니다. 자원은 URI를 통해 고유하게 식별되며, 각 자원은 GET, POST, PUT, DELETE 등의 메소드를 사용하여 다룰 수 있습니다. 메시지는 요청(Request)과 응답(Response)으로 구성되며, HTTP 프로토콜을 따릅니다.

위 메소드를 사용한 간단한 예시입니다.

from flask import Flask, request, jsonify

app = Flask(__name__)

# 사용자 정보를 저장할 리스트
users = []

# GET 메소드를 사용하여 모든 사용자 정보를 조회하는 API
@app.route('/users', methods=['GET'])
def get_all_users():
    return jsonify(users)

# POST 메소드를 사용하여 새로운 사용자 정보를 생성하는 API
@app.route('/users', methods=['POST'])
def create_user():
    new_user = request.get_json()
    users.append(new_user)
    return jsonify(new_user)
    
if __name__ == '__main__':
    app.run()

 

REST API의 특징 중 하나는 상태를 관리하지 않는다는 것입니다. 즉, 서버는 클라이언트의 상태를 저장하지 않으며, 클라이언트가 필요한 정보를 요청할 때마다 서버는 그에 맞는 응답을 보내줍니다. 이러한 구조는 서버의 부담을 줄이며, 클라이언트와 서버 간의 상호작용을 더욱 유연하게 만들어줍니다.

REST API의 장점 중 하나는 다양한 클라이언트와 서버 사이에서 상호 운용성을 보장한다는 것입니다. REST API는 일반적으로 XML 또는 JSON 형식으로 데이터를 전송하므로, 다양한 언어와 플랫폼 간의 상호운용성을 지원합니다

 

RESTful API 와의 차이

RESTful은 REST 아키텍처 스타일을 따르는 웹 서비스를 구현한 것을 의미합니다. 즉, RESTful은 REST API를 구현한 웹 서비스를 말합니다. RESTful 웹 서비스는 REST 아키텍처 스타일을 준수하며, 자원을 URL로 식별하고 HTTP 메소드를 사용하여 자원을 다룹니다. 또한 RESTful 웹 서비스는 HTTP 요청과 응답에 대한 표준을 따르고, 일반적으로 JSON 또는 XML 형식으로 데이터를 전송합니다.

따라서, RESTful은 REST 아키텍처 스타일을 따르는 웹 서비스를 의미하는 반면, REST API는 자원을 다루기 위한 아키텍처 스타일을 의미합니다. RESTful 웹 서비스는 REST API를 구현하는 한 가지 방법 중 하나입니다.

 

RESTful API 구성요소

클라이언트 요청

  1. Method (GET, POST, PUT, DELETE 등): 클라이언트가 요청하는 작업의 종류를 나타내는 메소드입니다.
  2. URI (Uniform Resource Identifier): 요청하는 자원의 경로를 나타내는 식별자입니다. URI는 요청하는 자원의 유형과 위치를 나타내며, RESTful API에서는 URI를 통해 CRUD(Create, Read, Update, Delete) 작업을 수행합니다.
  3. Headers: 요청에 대한 부가 정보를 포함합니다. 예를 들어, Accept, Authorization 등의 헤더가 있습니다.
  4. Body: 요청 본문에 포함되는 데이터입니다. 일반적으로 JSON, XML, 텍스트 등의 형식으로 데이터를 전송합니다.
  5. Query Parameters: URI에 추가적인 정보를 전달하기 위해 사용됩니다. 예를 들어, 검색어, 필터링, 정렬 등의 정보를 전달할 때 사용됩니다.

이러한 구성요소들은 클라이언트가 서버로 요청을 보낼 때 필요한 정보를 제공합니다. 각 요청은 이러한 구성요소들을 포함하여 전송되며, 서버는 이 정보를 기반으로 요청을 처리하고 응답을 반환합니다.

서버 응답

  1. Headers: 응답에 대한 부가 정보를 포함합니다. 예를 들어, Content-Type, Cache-Control 등의 헤더가 있습니다.
  2. Body: 응답 본문에 포함되는 데이터입니다. 일반적으로 JSON, XML, 텍스트 등의 형식으로 데이터를 전송합니다.
  3. Status Code: 요청 또는 응답의 성공 또는 실패를 나타내는 코드입니다. 예를 들어, 성공적인 요청의 경우에는 200 OK 코드가 반환되고, 실패한 요청의 경우에는 4xx 또는 5xx 코드가 반환됩니다.

 

반응형

+ Recent posts