我有一个flask应用程序,并且我正在尝试使用flask-restplus和蓝图。不幸的是,我的api端点始终返回在服务器上找不到请求的URL。。即使我看到它存在于app.url_map
的输出中。
该项目的布局如下:
- app.py
- api
- __init__.py
- resources.py
app.py
from api import api, api_blueprint
from api.resources import EventListResource, EventResource
app = Flask(__name__)
app.register_blueprint(api_blueprint)
db.init_app(flask_app)
app.run()
api / __ init __。py
from flask_restplus import Api
from flask import Blueprint
api_blueprint = Blueprint("api_blueprint", __name__, url_prefix='/api')
api = Api(api_blueprint)
api / resources.py
from flask_restplus import Resource
from flask import Blueprint
from . import api, api_blueprint
@api_blueprint.route('/events')
class EventListResource(Resource):
def get(self):
"stuff"
return items
def post(self):
"stuff"
db.session.commit()
return event, 201
应用程序启动没有问题,我可以看到'/api/events'
出现在app.url_map
中,因此我不确定为什么找不到该URL。任何帮助表示感谢,谢谢!
答案 0 :(得分:0)
Flask-RESTPlus提供了一种使用与Flask蓝图几乎相同的模式的方法。主要思想是将您的应用拆分为可重用的命名空间。
您可以这样操作:
app.py
from flask_restplus import Api
from api import api_namespace
app = Flask(__name__)
api = Api(app)
db.init_app(flask_app)
from api import api_namespace
api.add_namespace(api_namespace, path='/api')
app.run()
api / init .py
from flask_restplus import Namespace
api_namespace = Namespace('api_namespace')
api / resources.py
from flask_restplus import Resource
from api import api_namespace
@api_namespace.route('/events')
class EventListResource(Resource):
def get(self):
"stuff"
return items
def post(self):
"stuff"
db.session.commit()
以下是文档的链接: https://flask-restplus.readthedocs.io/en/stable/scaling.html