我在几个项目中使用过Flask,但在创建restul API时从未使用过flask-restful包 - 所以我想我应该试一试。
但是,我遇到了一个我无法理解的奇怪错误 - 而且API根本不起作用。错误消息显示
{
"message": "Not Found. You have requested this URI [/api/v1.0/items] but did you mean /api/v1.0/items ?",
"status": 404
}
run.py
from my_project import app
if __name__ == '__main__':
app.run(host=0.0.0.0, debug=app.config['DEBUG'])
my_project / _ init _.py
from flask import Flask
app = Flask(__name__)
from my_project.base import blueprint as BaseBluePrint
from my_project.api import blueprint as ApiBluePrint
app.register_blueprint(BaseBluePrint)
app.register_blueprint(ApiBluePrint, url_prefix='/api/v1.0')
my_project / api / _ init _.py
from flask import Blueprint
from flask.ext import restful
blueprint = Blueprint('api', __name__)
api = restful.Api(blueprint)
class ItemList(restful.Resource):
def get(self):
return false
api.add_resource(ItemList, '/items', endpoint='items')
这会导致什么?无论我做什么,错误仍然存在。看着Flask的url_map
,我可以看到我的路线 - 它看起来很好。远离蓝图并将其全部保存在一个文件中时,它可以正常工作。 Python v2.7和flask-restful v0.2.12(从Ubuntu Precise上的pip安装)。
答案 0 :(得分:0)
我也遇到过与斜杠有关的类似问题,例如我定义了api.com/endpoint,并且正在向api.com/endpoint/发送请求,并且出现404错误。
解决方案是通过以下方式将Flask应用程序配置为对斜杠不严格:app.url_map.strict_slashes = False