Defect #11388
closedUpdating a version through rest API returns invalid JSON
0%
Description
After PUTing a successful version update API request to /versions/1234.json
, a response body consisting of one space is returned, while it declares itself to be 'Content-Type: application/json'.
One space (" ") is not valid JSON, so a client interpreting the response according to the content-type header will issue an error.
(reported before in #9598, but does not mention content-type clash)
Related issues
Updated by Etienne Massip over 12 years ago
- Target version set to Candidate for next minor release
Updated by Jean-Philippe Lang over 12 years ago
- Target version changed from Candidate for next minor release to Candidate for next major release
Lets define the expected behaviour first.
Updated by Jean-Philippe Lang over 12 years ago
A more appropriate response should be a 204 response but I guess it could break some API clients. So I propose to respond with a 200 and an empty body. Should we keep the Content-Type as it is now?
Updated by Etienne Massip over 12 years ago
There has been a related commit in RoR (original LH ticket) to return an empty object (because setting Content-Type and no body makes no sense either I guess).
After discussion, it was eventually overrided by a new commit setting the response code to 204
and setting the body back to an single space.
I would do the way Rails do.
Edit: not an empty string, a single space.
Updated by Jean-Philippe Lang over 12 years ago
The default Rails behaviour is now a 204 No Content
with a non-empty body, really?
Updated by Etienne Massip over 12 years ago
Jean-Philippe Lang wrote:
The default Rails behaviour is now a
204 No Content
with a non-empty body, really?
Well, I did not test but that's what the code and commit say :D
...
assert_equal 204, @response.status
assert_equal " ", @response.body
...
Updated by Jean-Philippe Lang over 12 years ago
I have made a few tests with JQuery. It gives an error when responding with a one space response body indeed. But it seems to work fine with a 200 response and an empty body, even if the response Content-Type is set to text/json. It gives no error and returns null.
So I propose to just change the "one space" response body to an empty body.
Updated by Etienne Massip over 12 years ago
Did you try with a 204
and a single space?
Updated by Jean-Philippe Lang over 12 years ago
No, but I really don't want to change the API behaviour in this way and break compatibility.
Updated by Jean-Philippe Lang over 12 years ago
Etienne Massip wrote:
Did you try with a
204
and a single space?
It seems to behave just like with an empty 200 response.
Updated by Etienne Massip over 12 years ago
FTR, there exists a jQuery bug which has been closed.
Quote : An example of this is the 204 No Content status. The HTTP specification is unclear as to the inclusion of content-type. It does not forbid including it at any rate. But it does forbid the inclusion of a message-body.
Updated by Etienne Massip over 12 years ago
Jean-Philippe Lang wrote:
So I propose to just change the "one space" response body to an empty body.
Agreed.
Updated by Jean-Philippe Lang over 12 years ago
- Status changed from New to Resolved
- Assignee set to Jean-Philippe Lang
- Target version changed from Candidate for next major release to 2.0.4
- Resolution set to Fixed
Updated by Jean-Philippe Lang over 12 years ago
- Status changed from Resolved to Closed
- Target version changed from 2.0.4 to 2.1.0
No feedback about the change, it will wait for 2.1.0.