If your GET
requests are not idempotent then HTTP caching between your server and clients would break your application. POST
requests are by definition not idempotent, so HTTP caches will not cache these requests and results: you still get the benefits of caching GET
requests, without breaking your application's protocol. Great success.
And, if you ever need to delete objects, DELETE
will be much easier to read on the wire and logs than a POST
request that does the deletion. But web browsers cannot easily make HTTP requests with the DELETE
verb, so it's really more for clients you've programmed yourself.