couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Klaus Trainer (JIRA)" <>
Subject [jira] Commented: (COUCHDB-642) Support rev in PUT URL
Date Wed, 18 Aug 2010 13:50:17 GMT


Klaus Trainer commented on COUCHDB-642:

We need to consider that the ETag in the If-Match header doesn't override the _rev field in
the body either. In fact, if they are not equal, status code 400 Bad Request is returned.

I'm certainly not the one who can and wants to decide whether this behaviour should better
be changed or not.

The only opinion I have about the issue is that things should be consistent. That's the actual
reason why I wrote the patch: if the rev query parameter works with DELETE requests, it should
work with PUT requests as well.

In that sense, your argument that the _id field in the document is overridden and hence the
_rev field should be as well, sounds reasonable. Consequently, the ETag should also override
the body's _rev field in that case.

I can change the current behaviour, so that the rev query parameter and the ETag override
the _rev field in the body. However, I won't do anything in that direction, as long as I haven't
heard any opinion of some core developers.

> Support rev in PUT URL
> ----------------------
>                 Key: COUCHDB-642
>                 URL:
>             Project: CouchDB
>          Issue Type: New Feature
>          Components: HTTP Interface
>         Environment: trunk 08 Feb 2010
>            Reporter: Brian Candler
>            Priority: Minor
>         Attachments: 0001-Allow-for-the-current-revision-number-to-be.patch
> A DELETE request lets you append ?rev=xxxx to the URL. But this doesn't work with a PUT
request; you have to put the _rev in the body instead (even though the _id is taken from the
URL path)
> $ curl -X PUT -d "{}" http://brianadmin:brianadmin@
> {"ok":true,"id":"foo","rev":"1-967a00dff5e02add41819138abb3284d"}
> $ curl -X PUT -d "{}" http://brianadmin:brianadmin@
> {"error":"conflict","reason":"Document update conflict."}
> $ curl -X PUT -d '{"_rev":"1-967a00dff5e02add41819138abb3284d"}' http://brianadmin:brianadmin@
> {"ok":true,"id":"foo","rev":"2-7051cbe5c8faecd085a3fa619e6e6337"}
> Allowing ?rev in the URL would make PUT and DELETE more consistent, and would allow you
to replace an existing JSON doc with another one without having to merge the _rev into it

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message