9.3. Producing Web Service Data
If you've set up your application using RESTful controllers, then you're already halfway toward acting as a web service. Your application is set up with a standard API that other applications will be able to hit. The second half involves producing machine-readable code in the expected formats.
9.3.1. Producing XML
You've already seen the first part of the Rails XML response mechanism — it's part of the RESTful controller scaffold. As a reminder, here it is again:
def index @recipes = Recipe.find(:all) respond_to do |format| format.html # index.html.erb format.xml { render :xml => @recipes } end end
The render :xml method call immediately turns around and calls the to_xml method on the argument. Rails defines to_xml for most classes, including ActiveRecord::Base, Array, and Hash. For example, the default XML result for a Recipe object would look something like this:
<?xml version=\"1.0\" encoding=\"UTF-8\"?> <recipe> <cached-ingredient-string></cached-ingredient-string> <cached-tag-list>grandma, chicken, fred</cached-tag-list> <created-at type=\"datetime\">2007-08-05T20:03:33-05:00</created-at> <description>Yummy!</description> <directions>Things</directions> <id type=\"integer\">1</id> <servings>3</servings> <title>Grandma's Chicken Soup</title> <updated-at type=\"datetime\">2007-09-04T23:04:45-05:00</updated-at> <user-id type=\"integer\">2</user-id> </recipe>
The default XML for an array of recipes is similar, but it wraps the whole thing in a ...
Get Professional Ruby on Rails™ now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.