I have been using POST in a REST API to create objects. Every once in a while, the server will create the object, but the client will be disconnected before it receives the 201 Created response. The client only sees a failed POST request, and tries again later, and the server happily creates a duplicate object...

Others must have had this problem, right? But I google around, and everyone just seems to ignore it.

I have 2 solutions:

A) Use PUT instead, and create the (GU)ID on the client.

B) Add a GUID to all objects created on the client, and have the server enforce their UNIQUE -ness.

A doesn't match existing frameworks very well, and B feels like a hack. How does other people solve this, in the real world?

Edit:

With Backbone.js, you can set a GUID as the id when you create an object on the client. When it is saved, Backbone will do a PUT request. Make your REST backend handle PUT to non-existing id's, and you're set.