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: specify Content-Type of a document?
Date Wed, 22 Apr 2009 06:00:41 GMT
It passes my less than expert filter. I'll bug Chris to glance at it too.

Thanks for adding to the wiki.

Paul Davis

On Wed, Apr 22, 2009 at 1:51 AM, Samuel Wan <sam@samuelwan.com> wrote:
> Ok, I've added two sections to the "show and list" page:
>
> http://wiki.apache.org/couchdb/Formatting_with_Show_and_List
>
> Again, I'm new to couchdb and really just walking through the source,
> so an expert might want to review for accuracy.
>
> -Sam
>
> On Tue, Apr 21, 2009 at 2:41 PM, Paul Davis <paul.joseph.davis@gmail.com> wrote:
>> On Tue, Apr 21, 2009 at 5:36 PM, Samuel Wan <sam@samuelwan.com> wrote:
>>> Ok, thanks for the confirmation.
>>>
>>> That was an interesting trip through the code. CouchDB is absolutely
>>> blowing my mind :-)
>>>
>>
>> Yeah, one thing we have to work more on is documentation. Though the
>> test suite helps. Also, while thinking about it you might want to
>> check the wiki to see if you can add or update a page while you've got
>> it in your head.
>>
>> Thanks,
>> Paul Davis
>>
>>> -Sam
>>>
>>> On Tue, Apr 21, 2009 at 2:23 PM, Paul Davis <paul.joseph.davis@gmail.com>
wrote:
>>>> On Tue, Apr 21, 2009 at 4:56 PM, Samuel Wan <sam@samuelwan.com> wrote:
>>>>> Thanks a lot for the pointer, Paul, it would have taken a long time to
>>>>> find otherwise. So lemme see if I got it right...
>>>>>
>>>>> The manual approach is to specify the content type as a member of the
>>>>> _show function's response object:
>>>>>
>>>>> - - - - - - -
>>>>>  return {
>>>>>           "headers" : {
>>>>>             "Content-Type" : "application/xml"
>>>>>           },
>>>>>           "body" : new XML('<xml><node foo="bar"/></xml>')
>>>>>         }
>>>>> - - - - - - -
>>>>>
>>>>> The convenient approach is to use some global variables and helper
>>>>> methods defined by CouchDB's <couchdb>/server/main.js file. One
of
>>>>> these methods is registerType, which lets you register a type key with
>>>>> one or more MIME type strings.
>>>>>
>>>>> - - - - - - -
>>>>> registerType("foo", "application/foo", "application/x-foo"); //<--
>>>>> stored to some global associative array defined by main.js
>>>>> - - - - - - -
>>>>>
>>>>> The other helper method is respondsWith, which accepts a second
>>>>> argument (a key-value object) that maps type keys to functions that
>>>>> return different kinds of HTTP responses depending on the type.
>>>>>
>>>>
>>>> That sounds pretty much right. I'll tell Chris to double check when he
>>>> gets back.
>>>>
>>>>> - - - - - - -
>>>>> return respondWith(req, {
>>>>>          html : function() {
>>>>>            return {
>>>>>              body:"Ha ha, you said \"" + doc.word + "\"."
>>>>>            };
>>>>>          },
>>>>>          foo : function() {
>>>>>            return {
>>>>>              body: "foofoo"
>>>>>            };
>>>>>          },
>>>>>          fallback : "html"
>>>>>        });
>>>>> - - - - - - -
>>>>>
>>>>> So respondWith helper makes it easier for a show function respond to
>>>>> different Content-Type request headers... i think... Since there's a
>>>>> test for it, I guess content-type handling in the server-side JS is
>>>>> something CouchDB intends to support moving forward...
>>>>>
>>>>
>>>> Yep, they're features that CouchDB is comitted to keeping.
>>>>
>>>>
>>>> Paul Davis
>>>>
>>>>> -Sam
>>>>>
>>>>>
>>>>> On Tue, Apr 21, 2009 at 12:57 PM, Paul Davis
>>>>> <paul.joseph.davis@gmail.com> wrote:
>>>>>> Sam,
>>>>>>
>>>>>> This sounds very much like you want a _show function. Both _show
and
>>>>>> _list can specify the content-type returned to the client. You'll
want
>>>>>> to check the test suite code and look for the respondWith stuff for
>>>>>> examples.
>>>>>>
>>>>>> HTH,
>>>>>> Paul Davis
>>>>>>
>>>>>> On Tue, Apr 21, 2009 at 3:51 PM, Samuel Wan <sam@samuelwan.com>
wrote:
>>>>>>> I'm trying to build a simple learning experiment where I can
write
>>>>>>> HTML and Javascript into documents, and retrieve them with a
GET
>>>>>>> request. However, I don't know how to specify text/html or
>>>>>>> application/x-javascript as the Content-Type headers in the response
>>>>>>> to a document request.
>>>>>>>
>>>>>>> Is the recommended practice to simply store the html or js text
as
>>>>>>> attachments, or is it possible somehow to use a "show" function
to
>>>>>>> send them back with specific content type headers? I read some
of
>>>>>>> Chris Anderson's posts, the Safari Rough Cuts book, and looked
a bit
>>>>>>> at the CouchApp code, but it might be too much to grasp all at
once
>>>>>>> for me.
>>>>>>>
>>>>>>> -Sam
>>>>>>>
>>>>>>> On Tue, Apr 21, 2009 at 12:33 PM, Paul Davis
>>>>>>> <paul.joseph.davis@gmail.com> wrote:
>>>>>>>> Sam,
>>>>>>>>
>>>>>>>> We're consistently inconsistent in that we only sometimes
check for
>>>>>>>> the content-type when posting JSON documents. Of the top
of my head I
>>>>>>>> know we check in _temp_views but not for PUTs and POSTs to
docs or
>>>>>>>> _bulk_docs.
>>>>>>>>
>>>>>>>> If you mean for adding attachments to docs though CouchDB
will just
>>>>>>>> send you back the content-type header you attached it with
so you can
>>>>>>>> control what clients will see when fetching attachments.
>>>>>>>>
>>>>>>>> HTH,
>>>>>>>> Paul Davis
>>>>>>>>
>>>>>>>> On Tue, Apr 21, 2009 at 3:28 PM, Samuel Wan <sam@samuelwan.com>
wrote:
>>>>>>>>> Is it possible to specify the Content-Type header of
a document? Do
>>>>>>>>> you need to use a "show" function?
>>>>>>>>>
>>>>>>>>> -Sam
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>

Mime
View raw message