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())

显然,向/你好世界";不起作用。我怎么能"使Flask意识到";以便我得到有效的响应。

可能有一种非常聪明的方法可以做到这一点,但对我来说,解决方案是删除page/api/resources.py处的装饰器@api.resource装饰器,并在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

我还会将run.py移到page文件夹中,并根据Flask文档将其重命名为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')

要运行它,只需在page文件夹中键入flask run即可。

相关内容

  • 没有找到相关文章

最新更新