是的,听起来您需要设置一个 JSON api。有很多方法可以做到,但我最喜欢的方法是在接受 json 请求并返回 json 的 url 中有一个命名空间的“api”。方法如下:
在您的控制器中创建一个名为“api”的文件夹
在这个文件夹中创建一个名为 'api_controller.rb' 的控制器
把它放在那个控制器中:
class Api::ApiController < ApplicationController
skip_before_filter :verify_authenticity_token
#before_filter :set_headers # may need to set headers as listed below
#before_filter :authenticate_apiKey # if you want to authenticate the user, use an authentication token
respond_to :json
def set_headers
# Please look up what each of these headers do before adding them.
# headers['Access-Control-Allow-Origin'] = *
# headers['Access-Control-Expose-Headers'] = 'ETag'
# headers['Access-Control-Allow-Methods'] = 'GET, POST, PATCH, DELETE, OPTIONS, HEAD'
# headers['Access-Control-Allow-Headers'] = '*,Content-Type'
# headers['Access-Control-Max-Age'] = '86400'
end
end
然后,无论您在 api 文件夹中创建什么控制器,都让它从 Api::ApiController 继承,而不是像往常一样从 ApplicationController 继承。
在你的控制器动作中,你可以使用'render json: @object'
只需确保在您的模型中创建一个 serialiazable_hash 或 to_json 方法即可。
您还需要像这样更新您的路线文件:
namespace :api, defaults: { :format => :json } do
# put your routes here
end