[
https://issues.apache.org/jira/browse/OLINGO-53?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13818032#comment-13818032
]
ASF subversion and git services commented on OLINGO-53:
-------------------------------------------------------
Commit 038f49e911eb3aced118e9bf0fdaedfa095a2fea in branch refs/heads/master
from [~chandan.v.a]
[
https://git-wip-us.apache.org/repos/asf?p=incubator-olingo-odata2.git;h=038f49e
]
[OLINGO-53] DELETE HTTP response code and body are not compliant
Signed-off-by: Chandan V A <[email protected]>
> DELETE HTTP response code and body are not compliant
> ----------------------------------------------------
>
> Key: OLINGO-53
> URL: https://issues.apache.org/jira/browse/OLINGO-53
> Project: Olingo
> Issue Type: Bug
> Components: odata2-jpa
> Affects Versions: 1.0.0, 1.1.0
> Environment: olingo 1.1.0, tomcat 7
> Reporter: Georgi
> Assignee: Chandan V.A
> Priority: Blocker
> Fix For: 1.1.0
>
>
> The online documentation for OData V2 states the folowing with regards to
> DELETE requests (note the HTTP response code):
> http://www.odata.org/documentation/odata-v2-documentation/operations/#28_Deleting_Entries
> Entries are deleted by executing an HTTP DELETE request against a URI that
> points at the Entry. If the operation executed successfully, servers should
> return 200 (OK) with no response body.
> The PDF variant of the V3 documentation states the following(note the HTTP
> response code):
> http://download.microsoft.com/download/9/5/E/95EF66AF-9026-4BB0-A41D-A4F81802D92C/[MS-ODATA].pdf
> 2.2.7.4.1 DeleteEntity Request
> A DeleteEntity request MUST have an empty (0 bytes) payload. If the
> DeleteEntity request was successful, the response MUST have a 204 (No
> Content) status code, as specified in [RFC2616].
> I can't reach the PDF version for V2, but I was told by the JayData team that
> it states the same (see https://github.com/jaydata/jaydata/issues/110).
> The generic HTTP specification states the following with regards to the
> DELETE method (note the HTTP response code):
> http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.7
> A successful response SHOULD be 200 (OK) if the response includes an entity
> describing the status, 202 (Accepted) if the action has not yet been enacted,
> or 204 (No Content) if the action has been enacted but the response does not
> include an entity.
> As OData is a restful protocl it makes absolutely no sense to deviate from
> the standard HTTP without a good reason. As no such reason has been given,
> and since the PDF version states more reasonably that the return code for a
> successfull DELETE should be 204 as in RFC 2616, my conclusion is that the
> online documentaiton simply has a typo/error.
> Unfortunately olingo, similiar to odata4j, returns 200 on successfull DELETE.
> This is a big problem because many clients that have considered the more
> reasonable variant with return code 204, would interpret the 200 code as
> something tha carries content and will try to parse the payload. Since the
> payload is an empty string ("") it has no chance e.g. with a json parser.
> For reference, the HTTP comunitation log for a DELETE request to olingo
> currently goes as following:
> Request:
> DELETE <path-to-service>/SomeEntity(<someid>) HTTP/1.1
> MaxDataServiceVersion: 2.0
> Accept: application/atomsvc+xml;q=0.8, application/json;odata=verbose;q=0.5,
> */*;q=0.1
> DataServiceVersion: 2.0
> Response:
> HTTP/1.1 200 OK
> DataServiceVersion: 2.0
> Date: Thu, 31 Oct 2013 09:24:41 GMT
> Content-Type: application/json; odata=verbose
> Content-Length: 0
> and the body is ""
> Clearly, this complies with the online documentation, but that makes no sense
> at all. And the implication is that this makes olingo non-compliant with
> client libraries (datajs adn jaydata for example).
--
This message was sent by Atlassian JIRA
(v6.1#6144)