我正在尝试使用 Swagger 构建一个简单的 Flask 应用程序。到目前为止,经过一些教程,这就是我的main.py
样子:
import logging
import os
import random
from flask_restx import Api, Resource, fields
from src import create_app
app = create_app(os.getenv('env'))
api = Api(app, version='1.0', title='Sample API',
description='A sample API', doc='/api')
ns = api.namespace('userinfo', description='Python Microservice')
user = api.model('user', {
'name': fields.String(required=True, description='Employee Name'),
'role': fields.String(required=True, description='Employee Role'),
})
USERS = {'user_1000': dict(name="Elizabeth Lemon", role="Head"), 'user_1001': dict(name="Jack Donaghy", role="CEO"),
'user_1003': dict(name="Kenneth Parcell", role="Page")}
resource_fields = api.model('Resource', {
'name': fields.String,
'role': fields.String
})
@ns.route('/')
@api.doc(responses={200: 'Success', 201: 'Created'})
class UserInfo(Resource):
"""View list of all users, POST to add new user"""
def get(self):
"""List all users"""
return [{'id': u_id, 'user_info': user_info} for u_id, user_info in USERS.items()]
@api.doc(body=resource_fields)
def post(self):
"""Create a new user"""
data = api.payload
user_id = f"user_{random.randint(1004, 9999)}"
USERS[user_id] = dict(name=data['name'], role=data['role'])
logging.info(f"Created user {user_id} for {data['name']}")
return dict(user_id=user_id), 201
if __name__ == '__main__':
app.run(debug=True)
create_app()
函数定义__init__.py
如下:
def create_app(config_name):
app = Flask(__name__)
app.config.from_object(config_by_name[config_name])
setup_logging(app)
return app
现在,当我前往时,localhost:5000/api
我看到 GET/POST 文档正确加载了招摇页面。但是,当我点击时,localhost:5000
我得到了一个URL not found
错误 - 可以理解,因为我还没有定义/
路线 - 这就是我卡住的地方!如何在我的 中定义/
路线main.py
?据我了解,当前提供的所有端点都是/userinfo/
(GET、POST)和/api
. 我想添加该/
端点以方便检查应用程序是否已启动
我是使用 Python 中的 Flask 构建微服务的新手。集成 swagger 实际上改变了main.py
之前没有 swagger 的 coz 的面貌,我所有的路线都被注释了,app.route('/')
所以我可以有一个/
端点。