我正在尝试用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
即可。