백엔드/Flask (Python)
Flask - Swagger UI
박민서00
2024. 5. 9. 20:47
반응형
1. 설치
- flask-restful 라이브러리이다.
- Swagger UI로 보기 쉬운 API 사이트를 만들어 준다.
pip install flask-restx
2. Code
- Flask 메인 서버 파일 (manage.py)
- 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)
반응형