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 <[email protected]> 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 <[email protected]> > wrote: >> On Tue, Apr 21, 2009 at 5:36 PM, Samuel Wan <[email protected]> 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 <[email protected]> >>> wrote: >>>> On Tue, Apr 21, 2009 at 4:56 PM, Samuel Wan <[email protected]> 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 >>>>> <[email protected]> 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 <[email protected]> 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 >>>>>>> <[email protected]> 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 <[email protected]> wrote: >>>>>>>>> Is it possible to specify the Content-Type header of a document? Do >>>>>>>>> you need to use a "show" function? >>>>>>>>> >>>>>>>>> -Sam >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >> >
