couchdb-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Apache Wiki <wikidi...@apache.org>
Subject [Couchdb Wiki] Update of "Formatting with Show and List" by SamuelWan
Date Wed, 22 Apr 2009 05:48:53 GMT
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Couchdb Wiki" for change notification.

The following page has been changed by SamuelWan:
http://wiki.apache.org/couchdb/Formatting_with_Show_and_List

The comment on the change is:
Added sections about dealing with content-types manually or via respondWith()

------------------------------------------------------------------------------
  }
  }}}
  
+ === Specifying Content-Type Response Header ===
+ There are two ways to deal with a content-type header in the response to a show or list
request. The first way 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>')
+ }
+ }}}
+ 
+ 
+ === Responding to different Content-Type Request Headers ===
+ The second way to deal with content-type headers is to rely on some global helper
+ methods defined by CouchDB's ''<couchdb>/server/main.js'' file. The ''registerType''
method lets you register a type key with
+ one or more content-type strings. Please refer to the ''main.js'' file to see content-types
registered by default.
+ 
+ {{{
+ registerType("foo", "application/foo", "application/x-foo");
+ }}}
+ 
+ The other global helper method for handling varying Content-Type headers is ''respondWith''.
This helper method allows you to specify different response objects depending on the type
key that corresponds to the content-type request header. The first argument is the request
object, and the second argument is a key-value object that maps type keys to functions. Each
function is expected to return an HTTP response object customized for the requested Content-Type.
+ 
+ {{{
+ //... in your show function...
+ return respondWith(req, {
+          html : function() {
+            return {
+              body:"Ha ha, you said \"" + doc.word + "\"."
+            };
+          },
+          foo : function() {
+            return {
+              body: "foofoo"
+            };
+          },
+          fallback : "html"
+        });
+ }}}
+ 
+ 
  Hopefully this is enough to get started. For a more complete set of examples, see the CouchDB
test suite, especially show_documents.js and list_views.js
  

Mime
View raw message