由于 Ruby on Rails 遵循 REST,因此默认情况下,您的应用程序是它自己的 API。例如,假设您有以下控制器:
class UsersController < ApplicationController
def show
@user = User.find(params[:id])
respond_to do |format|
format.html
format.xml { render :xml => @user}
format.js
end
end
def index
@users = User.all
respond_to do |format|
format.html
format.xml { render :xml => @users}
format.js
end
end
end
现在,当通过 Web 浏览器点击该控制器时,它将按照您的预期呈现您的视图。例如:
GET /users/1 => /app/views/users/show.html.erb
GET /users => /app/views/users/index.html.erb
但是,如果您将请求更改为:
GET /users/1.xml
GET /users.xml
将返回 XML 数据而不是 HTML 视图。您现在可以通过使用某种REST Client或简单地从任何命令行调用 cURL 从任何其他应用程序访问此数据。
您可以将任何扩展名附加到 URL 的末尾,它会找到相应的 respond_to 部分。