我在一个项目中使用了Flask-Restful,同时也使用工厂模式来创建
以下是创建API应用程序的函数:
Flask
对象。现在的问题是当我尝试访问http://localhost:5000/api/v1/user/
时,Flask会给出404错误,但是当我查看(Flask应用程序对象的)url_map
时,我的API规则是存在的。如果有人遇到过相同的问题,我正在寻找任何可能的解决方案。以下是创建API应用程序的函数:
def create_app(settings_override=None):
"""
Returns the API :class:`Flask` instance.
:param settings_override: dictionary of settings to override.
"""
app = factory.create_app(__name__, __path__, settings_override)
api = Api(app, prefix='/api/v1', catch_all_404s=True)
# API endpoints connected to the User model.
api.add_resource(UserAPI, '/user/', endpoint='user')
return app
用户API类的代码(由Flask-Restful使用):
class UserAPI(Resource):
"""
API :class:`Resource` for returning the details of a user.
This endpoint can be used to verify a user login credentials.
"""
def get(self):
return {'hello': 'world'}, 200
def post(self):
pass
factory.create_app
函数:
def create_app(package_name, package_path, settings_override=None):
"""
Returns an instance of Flask configured with common functionnalities for
Cubbyhole.
:param package_name: application package name
:param package_path: application package path
:param settings_override: a dictionnary of settings to override
"""
app = Flask(package_name, instance_relative_config=True)
app.config.from_object('cubbyhole.settings')
app.config.from_pyfile('settings.cfg', silent=True)
if settings_override is not None:
app.config.update(settings_override)
db.init_app(app)
register_blueprints(app, package_name, package_path)
return app
Python 2.7版本 Flask v. Flask-Restful版本
python 2.7
,flask
,werkzeug
和flask-restful
。可能是你的环境或者factory.create_app
出了问题。 - tbicrFlask(__name__)
而不是factory.create_app
进行了测试,结果也可以。现在我正在调试factory.create_app
函数,但不知道问题可能来自哪里,因为该函数没有什么特别之处...(我已将该函数的代码添加到帖子中) - phndiaye__path__
变量,但可能是由于您的配置、数据库或蓝图初始化问题引起的。 - tbicr