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.
>
>

Reply via email to