I defined some resource called WorkerAPI
using flask-restful and the plan is to process POST request from /api/workers/new
and GET request from /api/workers/
. When using the following code
api.add_resource(WorkerAPI, '/api/workers/new')
api.add_resource(WorkerAPI, '/api/workers/')
I get errors:
AssertionError: View function mapping is overwriting an existing endpoint function: workerapi
Then I tried to use the following, which seems to work, although I don't know why it works.
api.add_resource(WorkerAPI, '/api/workers/new', endpoint='/workers/new')
api.add_resource(WorkerAPI, '/api/workers/', endpoint='/workers/')
It looks like redundant information to me though. It seems the site works as long as the two endpoint
s are defined as different strings. What does endpoint
mean here?
The thing is that the add_resource
function registers the routes with the framework using the given endpoint
. If an endpoint
isn't given then Flask-RESTful generates one for you from the class name.
Your case is WorkerAPI
, the endpoint will beworkerapi
for these two methods, better make endpoint
explicit and avoid to have conflicting endpoint names registered.
For what's endpoint, you can refer to this answer for more details.