来自documentation:
网址
一个或多个与资源匹配的 url 路由,标准烧瓶
路由规则适用。任何 url 变量都将传递给资源
方法作为参数。
端点
端点名称(默认为 Resource.name.lower() 可用于
在 fields.Url 字段中引用此路由
endpoint参数在你打算管理同一个类的两个或多个url时必须指定,其实考虑如下代码sn-p:
from flask import Flask, request
from flask_restful import Api, Resource
class my_handler(Resource):
def get(self):
return request.base_url
app = Flask(__name__)
api = Api(app)
api.add_resource(my_handler, '/')
api.add_resource(my_handler, '/hello')
if __name__ == '__main__':
app.run(host="0.0.0.0", port=5000)
flask 将无法执行应用程序,引发异常:
Exception has occurred: AssertionError
View function mapping is overwriting an existing endpoint function: my_handler
为了让flask能够处理同一个类的多个url,你需要指定endpoint参数:
from flask import Flask, request
from flask_restful import Api, Resource
class my_handler(Resource):
def get(self):
return request.base_url
app = Flask(__name__)
api = Api(app)
api.add_resource(my_handler, '/', endpoint='/')
api.add_resource(my_handler, '/hello', endpoint='/hello')
if __name__ == '__main__':
app.run(host="0.0.0.0", port=5000)
通过 http 调用,服务器通过返回请求资源的 url 来响应:
curl --location --request GET http://127.0.0.1:5000/
"http://127.0.0.1:5000/"
curl --location --request GET http://127.0.0.1:5000/hello
"http://127.0.0.1:5000/hello"