Python/Python Flask

Flask RESTful API 기본 개념

임베디드 친구 2025. 9. 7. 17:44
728x90
반응형

Flask RESTful API 기본 개념

Flask는 Python으로 작성된 가벼운 웹 프레임워크로, RESTful API를 쉽게 만들 수 있는 강력한 도구를 제공합니다. 이번 포스팅에서는 Flask를 사용하여 RESTful API를 구축하는 기본 개념과 간단한 예제를 살펴보겠습니다.

RESTful API란?

REST(Representational State Transfer)는 클라이언트와 서버 간의 통신을 단순화하고 표준화하기 위한 아키텍처 스타일입니다. RESTful API는 다음과 같은 특징을 가집니다:

  1. 리소스 기반: URL은 리소스를 나타냅니다.
  2. HTTP 메서드 사용: HTTP 메서드(GET, POST, PUT, DELETE 등)를 활용하여 리소스를 조작합니다.
  3. 무상태성: 각 요청은 독립적이며, 서버는 클라이언트의 상태를 저장하지 않습니다.
  4. 표준 응답 형식: JSON이나 XML과 같은 표준 데이터 형식을 사용합니다.

Flask로 RESTful API 만들기

Flask를 사용하면 RESTful API를 간단히 만들 수 있습니다. 여기서는 Flask와 Flask-RESTful 확장을 사용하여 API를 구축하는 방법을 알아봅니다.

1. Flask와 Flask-RESTful 설치

pip install flask flask-restful

2. 기본 RESTful API 구현

아래는 간단한 Flask RESTful API 예제입니다. 이 API는 사용자를 관리하는 기능을 제공합니다.

from flask import Flask, request
from flask_restful import Resource, Api

app = Flask(__name__)
api = Api(app)

# 데이터 저장용 딕셔너리
users = {}

# 사용자 관련 리소스 정의
class User(Resource):
    def get(self, user_id):
        """특정 사용자 정보 조회"""
        if user_id in users:
            return {"user_id": user_id, "data": users[user_id]}, 200
        return {"message": "User not found"}, 404

    def put(self, user_id):
        """특정 사용자 정보 업데이트"""
        data = request.get_json()
        users[user_id] = data
        return {"message": "User updated", "data": data}, 200

    def delete(self, user_id):
        """특정 사용자 삭제"""
        if user_id in users:
            del users[user_id]
            return {"message": "User deleted"}, 200
        return {"message": "User not found"}, 404

class UserList(Resource):
    def get(self):
        """모든 사용자 목록 조회"""
        return {"users": users}, 200

    def post(self):
        """새로운 사용자 추가"""
        user_id = len(users) + 1
        data = request.get_json()
        users[user_id] = data
        return {"message": "User created", "user_id": user_id, "data": data}, 201

# API 경로 등록
api.add_resource(UserList, '/users')
api.add_resource(User, '/users/<int:user_id>')

if __name__ == '__main__':
    app.run(debug=True)

3. 코드 설명

  1. Flask-RESTful 초기화: Api 객체를 생성하여 Flask 앱에 연결합니다.
  2. 리소스 정의: Resource 클래스를 상속받아 API의 각 엔드포인트 동작(GET, POST, PUT, DELETE 등)을 정의합니다.
  3. 엔드포인트 등록: api.add_resource를 사용하여 URL과 리소스를 연결합니다.
  4. 데이터 저장: 간단히 users 딕셔너리를 사용했지만, 실제로는 데이터베이스를 사용할 수 있습니다.

4. 실행 결과

  1. 서버 실행: 위 코드를 실행하면 Flask 개발 서버가 http://127.0.0.1:5000에서 실행됩니다.
  2. 테스트 요청:
    • GET /users: 모든 사용자 목록을 반환합니다.
    • POST /users: 새 사용자를 추가합니다.
      {
          "name": "John Doe",
          "email": "john@example.com"
      }
    • GET /users/1: ID가 1인 사용자의 정보를 반환합니다.
    • PUT /users/1: ID가 1인 사용자의 정보를 업데이트합니다.
    • DELETE /users/1: ID가 1인 사용자를 삭제합니다.

5. RESTful API 테스트

RESTful API를 테스트하기 위해 Postman이나 curl을 사용할 수 있습니다.

예제:

# 모든 사용자 조회
curl -X GET http://127.0.0.1:5000/users

# 새 사용자 추가
curl -X POST http://127.0.0.1:5000/users \
-H "Content-Type: application/json" \
-d '{"name": "Alice", "email": "alice@example.com"}'

# 특정 사용자 조회
curl -X GET http://127.0.0.1:5000/users/1

# 사용자 정보 업데이트
curl -X PUT http://127.0.0.1:5000/users/1 \
-H "Content-Type: application/json" \
-d '{"name": "Alice Updated", "email": "alice.updated@example.com"}'

# 사용자 삭제
curl -X DELETE http://127.0.0.1:5000/users/1

결론

Flask와 Flask-RESTful은 간단하면서도 강력한 RESTful API를 구축할 수 있는 도구를 제공합니다. 이번 포스팅에서는 기본적인 개념과 예제를 통해 Flask RESTful API의 동작 원리를 살펴보았습니다.

반응형