본문 바로가기

Framework/Flask

[ Flask ] add_namespace - Restx로 RestAPI 만들기

반응형

Flask에서 add_namespace는 일반적으로 Flask-Restx와 같은 라이브러리에서 사용됩니다. Flask-Restx는 Flask를 확장하여 RESTful API를 더 쉽게 만들 수 있게 해주는 도구입니다. add_namespace는 API의 특정 경로를 네임스페이스로 그룹화하여 관리할 때 유용합니다. 이를 통해 코드 구조를 더 잘 조직할 수 있으며, 큰 애플리케이션에서 특정 기능별로 분리된 API 엔드포인트를 정의할 수 있습니다.

Flask-Restx에서 add_namespace 사용법

  1. Flask-Restx 설치
    먼저 Flask-Restx를 설치해야 합니다.
   pip install flask-restx
  1. 기본 구조 설정
    Flask 앱을 설정하고 add_namespace를 사용하는 방법은 다음과 같습니다.
   from flask import Flask
   from flask_restx import Api, Namespace, Resource

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

   # 네임스페이스 정의
   ns = Namespace('users', description='User related operations')

   # 리소스 정의
   @ns.route('/<int:id>')
   class UserResource(Resource):
       def get(self, id):
           return {'user_id': id}

   # 네임스페이스를 API에 추가
   api.add_namespace(ns)

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

위 코드에서 Namespace/users라는 경로와 관련된 API 리소스를 정의합니다. 그런 다음 api.add_namespace(ns)를 사용하여 이 네임스페이스를 API에 추가합니다.

  1. 네임스페이스 여러 개 추가하기
    여러 네임스페이스를 추가할 수도 있습니다.
   from flask import Flask
   from flask_restx import Api, Namespace, Resource

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

   # 첫 번째 네임스페이스
   user_ns = Namespace('users', description='User related operations')
   @user_ns.route('/<int:id>')
   class UserResource(Resource):
       def get(self, id):
           return {'user_id': id}

   # 두 번째 네임스페이스
   product_ns = Namespace('products', description='Product related operations')
   @product_ns.route('/<int:id>')
   class ProductResource(Resource):
       def get(self, id):
           return {'product_id': id}

   # 네임스페이스 추가
   api.add_namespace(user_ns)
   api.add_namespace(product_ns)

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

이 예제에서는 /users/<id>/products/<id> 경로를 통해 각각 사용자와 제품에 대한 API를 제공합니다.

요약

  • add_namespace는 Flask-Restx의 기능으로, 네임스페이스를 API에 추가하여 경로를 그룹화할 수 있습니다.
  • 네임스페이스는 여러 리소스(Route)를 하나의 그룹으로 묶을 수 있으며, 이를 통해 API 코드 구조를 더 잘 관리할 수 있습니다.
반응형