The reason it you need ?rev= for DELETE is that there's no request body for DELETE, unlike for PUT. So I don't see that adding ?rev= for PUT is about consistency. It looks like a neat enhancement, though, the issues with precedence notwithstanding.
B. On Wed, Aug 18, 2010 at 2:50 PM, Klaus Trainer (JIRA) <[email protected]> wrote: > > [ > https://issues.apache.org/jira/browse/COUCHDB-642?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12899848#action_12899848 > ] > > 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: https://issues.apache.org/jira/browse/COUCHDB-642 >> 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:[email protected]:5984/briantest/foo >> {"ok":true,"id":"foo","rev":"1-967a00dff5e02add41819138abb3284d"} >> $ curl -X PUT -d "{}" >> http://brianadmin:[email protected]:5984/briantest/foo?rev=1-967a00dff5e02add41819138abb3284d >> {"error":"conflict","reason":"Document update conflict."} >> $ curl -X PUT -d '{"_rev":"1-967a00dff5e02add41819138abb3284d"}' >> http://brianadmin:[email protected]:5984/briantest/foo >> {"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 first. > > -- > This message is automatically generated by JIRA. > - > You can reply to this email to add a comment to the issue online. > >
