flask 中的端点是什么意思-restful

what does endpoint mean in flask-restful

我使用 flask-restful 定义了一些名为 WorkerAPI 的资源,计划处理来自 /api/workers/new 的 POST 请求和来自 /api/workers/ 的 GET 请求.使用以下代码时

api.add_resource(WorkerAPI, '/api/workers/new')
api.add_resource(WorkerAPI, '/api/workers/')

我收到错误:

AssertionError: View function mapping is overwriting an existing endpoint function: workerapi

然后我尝试使用下面的,这似乎有效,虽然我不知道它为什么有效。

api.add_resource(WorkerAPI, '/api/workers/new', endpoint='/workers/new')
api.add_resource(WorkerAPI, '/api/workers/', endpoint='/workers/')

虽然对我来说这看起来像是多余的信息。只要将两个 endpoint 定义为不同的字符串,该站点似乎就可以正常工作。 endpoint 在这里是什么意思?

问题是 add_resource 函数使用给定的 endpoint 向框架注册路由。如果未给出 endpoint,则 Flask-RESTful 会根据 class 名称为您生成一个。

您的情况是 WorkerAPI,这两种方法的端点将是 workerapi,最好明确 endpoint 并避免注册冲突的端点名称。

什么是端点,可以参考this answer了解更多详情

'endpoint' 实际上是一个标识符,用于确定代码的哪个逻辑单元应该处理特定请求。

因此,URL 路径映射到端点,然后端点映射到 Flask 应用程序中的视图函数。

在你的例子中,当你为你的资源明确定义你的端点时,它有助于 flask 应用程序在内部有效地将它映射到一个路由列表,而当你没有明确定义它时,flask 会采用一些默认值,正如@Tiny.D在上面的回答中所解释的那样。