Defect #11388
closed
Updating a version through rest API returns invalid JSON
Added by Daan Broekhof over 12 years ago.
Updated over 12 years ago.
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)
- Target version set to Candidate for next minor release
- Target version changed from Candidate for next minor release to Candidate for next major release
Lets define the expected behaviour first.
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?
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.
The default Rails behaviour is now a 204 No Content
with a non-empty body, really?
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
...
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.
Did you try with a 204
and a single space?
No, but I really don't want to change the API behaviour in this way and break compatibility.
Etienne Massip wrote:
Did you try with a 204
and a single space?
It seems to behave just like with an empty 200 response.
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.
Jean-Philippe Lang wrote:
So I propose to just change the "one space" response body to an empty body.
Agreed.
- 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
- 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.
Also available in: Atom
PDF