incubator-couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Paul Davis <paul.joseph.da...@gmail.com>
Subject Re: Default response is text/plain
Date Mon, 02 Feb 2009 11:07:18 GMT
Brian,

Link Jan say, as far as my recollection goes this was to get browser
viewing correct. If you felt like reworking things so that the Accept
header were treated more correctly including the weights etc I don't
think anyone would argue with more closely supporting the spec.

HTH,
Paul Davis

On Mon, Feb 2, 2009 at 4:42 AM, Brian Candler <B.Candler@pobox.com> wrote:
> I was going to post this on JIRA but thought I'd better raise it here first,
> in case this is intentional behaviour.
>
> By default, all Couchdb responses have Content-Type: text/plain rather than
> application/json - observed using tcpdump on a ruby app using couch-potato,
> and easily replicated using telnet.
>
> $ telnet localhost 5984
> Trying 127.0.0.1...
> Connected to localhost.
> Escape character is '^]'.
> GET /test_suite_db HTTP/1.0
>
> HTTP/1.0 200 OK
> Server: CouchDB/0.9.0a739811-incubating (Erlang OTP/R12B)
> Date: Mon, 02 Feb 2009 09:31:36 GMT
> Content-Type: text/plain;charset=utf-8        <<<<<<<<
> Content-Length: 171
> Cache-Control: must-revalidate
>
> {"db_name":"test_suite_db","doc_count":1,"doc_del_count":1,"update_seq":7,"purge_seq":0,"compact_running":false,"disk_size":15755,"instance_start_time":"1233566693355400"}Connection
closed by foreign host.
>
> However, if you explicitly ask for application/json with an Accept: header,
> you get that Content-Type instead.
>
> $ telnet localhost 5984
> Trying 127.0.0.1...
> Connected to localhost.
> Escape character is '^]'.
> GET /test_suite_db HTTP/1.0
> Accept: application/json
>
> HTTP/1.0 200 OK
> Server: CouchDB/0.9.0a739811-incubating (Erlang OTP/R12B)
> Date: Mon, 02 Feb 2009 09:32:03 GMT
> Content-Type: application/json        <<<<<<<<
> Content-Length: 171
> Cache-Control: must-revalidate
>
> {"db_name":"test_suite_db","doc_count":1,"doc_del_count":1,"update_seq":7,"purge_seq":0,"compact_running":false,"disk_size":15755,"instance_start_time":"1233566693355400"}Connection
closed by foreign host.
>
> This seems odd behaviour to me. The "negotiated" content is no different,
> and the response clearly *is* application/json, whether or not you provide
> an Accept: header.
>
> Is this a workaround for some client bug? Or to make Couchdb work better
> with browsers for manual interaction?
>
> Now, as it happens: couch-potato/couchrest/rest-client is actually sending
>    Accept: application/xml
> and the response which comes back is
>    Content-Type: text/plain;charset=utf-8
>
> Of course, the client stack is requesting the wrong media type entirely, but
> under this circumstance I'd still expect Couchdb to say that the response is
> application/json rather than text/plain, as being a more accurate
> description of what has been returned.
>
> So my suggested behaviour would be: only return test/plain if the Accept:
> header is present, *and* it contains text/plain, *and* this is higher
> priority than application/json (if that is present too). Otherwise return
> application/json.
>
> But as I say, maybe this has been discussed before and the current behaviour
> is entirely intentional.
>
> Thanks,
>
> Brian.
>

Mime
View raw message