Flask 应用无法识别 flask_restful 资源
Flask app doesn't recognize flask_restful resources
我正在尝试使用 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"}
页面/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 知道”这些资源,以便我得到有效的响应。
可能有一个更聪明的方法来做到这一点,但对我来说,解决方案是删除 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
我还将根据 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')
而对于 运行,只需在 page
文件夹中键入 flask run
。
我正在尝试使用 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"}
页面/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 知道”这些资源,以便我得到有效的响应。
可能有一个更聪明的方法来做到这一点,但对我来说,解决方案是删除 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
我还将根据 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')
而对于 运行,只需在 page
文件夹中键入 flask run
。