如何解决Flask 应用无法识别flask_restful 资源
我正在尝试使用flask_restful 构建API,但我不知道如何将继承自Resource 的类与实际应用程序连接起来。 我有以下结构
page
├───api
│ └───__init__.py
│ └───resources.py
└───__init__.py
page/api/resources.py:
from flask_restful import Resource
from page import api
@api.resource("/hello-world")
class HelloWorld(Resource):
def get(self):
return {"hello": "World"}
page/init.py:
from flask import Flask
from flask_restful import Api
from page.config import Config1
api = Api()
def create_app(config_class=Config1):
app = Flask(__name__)
app.config.from_object(config_class)
api.init_app(app)
return app
run.py(页面包外):
from page import create_app
if __name__ == "__main__":
app = create_app()
app.run(debug=True)
测试:
import requests
BASE = "http://127.0.0.1:5000/"
response = requests.get(BASE + "hello-world")
print(response.json())
显然,向“/hello-world”发出请求是行不通的。我怎样才能“让 Flask 知道”这些资源,以便我得到有效的响应。
解决方法
可能有一个非常聪明的方法来做到这一点,但对我来说,解决方案是删除 @api.resource
处的装饰器 page/api/resources.py
装饰器,并在 page/init.py
处进行以下更改>
from flask import Flask
from page.config import Config1
def create_app(config_class=Config1):
app = Flask(__name__)
app.config.from_object(config_class)
return app
我还将根据 Flask 文档将 run.py
移动到 page
文件夹中并将其重命名为 app.py
。这个 app.py
应该有你的路线,所以把它改成这样:
from page import create_app
from page.api.resources import HelloWorld
from flask_restfull import api
app = create_app()
api = Api(app)
api.add_resource(HelloWorld,'/hello-world')
要运行它,只需在 flask run
文件夹中输入 page
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。