백엔드/Flask (Python)

Flask - Swagger UI

박민서00 2024. 5. 9. 20:47
반응형

1. 설치


  • flask-restful 라이브러리이다.
  • Swagger UI로 보기 쉬운 API 사이트를 만들어 준다.

API 문서 예시

pip install flask-restx

2. Code


  1. Flask 메인 서버 파일 (manage.py)
  2. User Router에 대한 정의 파일 (user_api.py)

manage.py

from flask import Flask
from flask_restx import Api
from flask_cors import CORS

import os
api = Api(version='1.0', title='API', description='Drive Server API', doc="/api-docs")

def register_router(app: Flask):
    from apis import user_api
    api.add_namespace(user_api.ns)

def create_app():
    app = Flask(__name__)


    CORS(app)

    api.init_app(app)
    register_router(app)


    return app


if __name__ == '__main__':
    create_app().run(host='0.0.0.0', port=5000, debug=True)

user_api.py


from flask_restx import Namespace, Resource
import sys, os

ns = Namespace(
    name='user',
    description='유저 관련 API'
)

temp_url = ''
url_list = os.getcwd().split('\\')

for i in range(len(url_list)-1):
    temp_url += f'{url_list[i]}'+'/'

sys.path.append(temp_url)
from manage import getServerPath

@ns.route('/user')
class User1(Resource):

    @ns.response(404, 'page not found')
    @ns.response(200, 'pong')
    def get(self):
        return 'pong'


@ns.route('/login')
class User2(Resource):

    @ns.response(200, 'return Url')
    def get(self):
        return getServerPath()

@ns.route('/register')
class User3(Resource):

    @ns.response(200, 'return Url')
    def get(self):
        return getServerPath()

3. 그 외 사용법

Model 만들어 사용방법


  • namespace의 Model을 이용해서 스키마를 만든다.
  • 만든 Model을 라우터에 적용시켜 post 전송의 경우 swagger api "parameter" 에 표시할 수 있도록 한다.
# 모델 만들기
path_model = ns.model('path',{'path' : fields.String()})

# 라우터 
@ns.route('/setDir')
class Drive5(Resource):

    @ns.expect(path_model) # <- 모델 등록 부분
    @ns.response(200, 'return Url')
    def post(self):
        data = request.json
        new_path = data['path']
        setServerPath(new_path)

Post 모델 적용 예시

반응형