【问题标题】:python - Flask-RESTful get 404 error?python - Flask-RESTful 得到 404 错误?
【发布时间】:2016-05-03 14:48:14
【问题描述】:

我遵循flask-RESTfulofficial docs 并尝试实现第一个hello world 演示。

起初,我将所有示例代码放在一个文件中,一切正常。

但是,当我将代码拆分为三个单独的文件时(试图使项目更有条理),我总是遇到 404 错误

文件结构

.
├── app.py
├── app
    ├── __init__.py
    ├── __api__.py
└── venv

__init__.py

# -*- coding: utf-8 -*-
#initialization
from flask import Flask
from flask_restful import Resource, Api

app = Flask(__name__)
api = Api(app)

api.py

# -*- coding: utf-8 -*-
from app import app, api
from flask_restful import Resource, Api

class HelloWorld(Resource):
    def get(self):
        return {'hello': 'world'}

api.add_resource(HelloWorld, '/')

app.py

# -*- coding: utf-8 -*-
from app import app

if __name__ == '__main__':
    app.run(debug=True)

在 python 控制台中:

 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger pin code: 250-643-552
127.0.0.1 - - [03/May/2016 22:35:20] "GET / HTTP/1.1" 404 -
127.0.0.1 - - [03/May/2016 22:35:24] "GET / HTTP/1.1" 404 -
127.0.0.1 - - [03/May/2016 22:38:15] "GET / HTTP/1.1" 404 -

怎么了?


编辑

我现在可以通过将api.add_resource(HelloWorld, '/') 移动到app.py 来获得预期的结果

app.py(已编辑)

# -*- coding: utf-8 -*-
from app import app, api
from app.api import HelloWorld

api.add_resource(HelloWorld, '/')


if __name__ == '__main__':
    app.run(debug=True)

不知道为什么?

【问题讨论】:

    标签: python rest flask flask-restful


    【解决方案1】:

    您以前的版本不起作用的原因是模块 api.py 从未加载,因此下面的代码(用于将 URI 映射到给定资源)不会被执行:

    api.add_resource(HelloWorld, '/')
    

    实际上,在您的编辑/最新版本中,您不必重写 app.py 中的那行代码。相反,您只需要从 api.py 导入一些东西。

    顺便说一句,通常装饰器api.resource 用于声明映射。

    【讨论】:

      猜你喜欢
      • 2018-04-13
      • 1970-01-01
      • 2017-11-20
      • 1970-01-01
      • 1970-01-01
      • 2014-07-23
      • 2017-08-11
      • 2022-10-24
      • 1970-01-01
      相关资源
      最近更新 更多