While reading some articles about writing web servers using Twisted, I came across this page that includes the following statement:
While it’s convenient for this example, it’s often not a good idea to
make a resource that POSTs to itself; this isn’t about Twisted Web,
but the nature of HTTP in general; if you do this, make sure you
understand the possible negative consequences.
In the example discussed in the article, the resource is a web resource retrieved using a GET request.
My question is, what are the possible negative consequences that can arrive from having a resource POST to itself? I am only concerned about the aspects related to the HTTP protocol, so please ignore the fact that I mentioned about Twisted.
The POST verb is used for making a new resource in a collection.
This means that POSTing to a resource has no direct meaning (POST endpoints should always be collections, not resources).
If you want to update your resource, you should PUT to it.
Sometimes, you do not know if you want to update or create the resource (maybe you’ve created it locally and want to create-or-update it). I think that in that case, the PUT verb is more appropriate because POST really means “I want to create something new”.