【问题标题】:HTTP 404 errors on trivial Flask-Restless app普通 Flask-Restless 应用程序上的 HTTP 404 错误
【发布时间】:2013-04-09 10:55:24
【问题描述】:

我已经安装了Flask-Restless 并尝试运行quickstart app。所有请求都返回 404 错误(在 python 日志和 curl 响应中)。我的整个设置是:

$ virtualenv venv --distribute
$ source venv/bin/activate
$ pip install flask-restless
$ pip install flask-sqlalchemy # it doesn't appear to do this automatically
... Copy code from quickstart to "run.py" ...
$ python ./run.py

(another window)
$ curl -i http://127.0.0.1:5000/

run.py 的控制台输出是:

 * Running on http://127.0.0.1:5000/
 * Restarting with reloader
127.0.0.1 - - [16/Apr/2013 17:08:05] "GET / HTTP/1.1" 404 -

确实创建了test.db,使用调试器我可以看到app.run() 确实执行了。

有趣的是,我得到与Eve 完全相同的行为。不过,我可以运行简单的 Flask 应用程序。

如果重要的话,这是 OS X 10.8 和 Python 2.7.3。

【问题讨论】:

    标签: flask flask-restless


    【解决方案1】:

    来自 Flask-Restless documentation...

    默认情况下,在上述代码示例中,Person 的 API 将是 可在http://<host>:<port>/api/person 访问,其中人员部分 URL 的值是Person.__tablename__:

    我的猜测是,默认情况下,这些框架不会在路径/ 上设置端点。它们只为与 API 中的实际对象相关的路径定义了端点。试试下面的...

    curl -i http://127.0.0.1:5000/api/person
    curl -i http://127.0.0.1:5000/person
    

    这些 URL 实际上可能会到达您定义的端点。

    【讨论】:

    • 特别是它原来是curl http://127.0.0.1:5000/api/person(这有点令人惊讶;我没有意识到它会小写它)。我曾假设根目录会给出某种 Django 风格的“这里是 API”。谢谢;这是一个真正的帮助。 Eve 的问题仍然存在,但这意味着这是 Eve 的问题,而不是我的常规设置。
    • 在我研究文档时,小写字母来自 Flask-SQLAlchemy,它将 CamelCase 更改为 camel_case
    • [Slight Unrelated] 当心 url_prefix 和 _tablename_ 我花了三个小时试图弄清楚这一点。如果你有一个 model Person 例如:person_blueprint = manager.create_api_blueprint(Person, methods=['GET', 'POST', 'DELETE'], url_prefix="/api") 你的 url 应该看起来像 http://localhost:5000/api/person 在我的例子中,我以这种方式创建了一个蓝图 person_blueprint = manager.create_api_blueprint(Person, methods=['GET', 'POST', 'DELETE'], url_prefix="/person") 错误的 url_prefix 给我带来了很多 404 痛苦.
    猜你喜欢
    • 2018-04-13
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多