我有一个简单的rails应用程序,为User
,Article
,Comments
模型提供CRUD。
我需要公开RESTful API以从第三方服务中使用它。我为/api/v1/....
个请求添加了一个单独的命名空间,并使用了Active Model Serializers。但它影响了现有代码以及UsersController
,ArticlesController
与视图之间的所有互动,因为序列化已在整个应用中完全更改。
有没有办法让序列化服务器只能使用API控制器?
以下是一些代码:
class UserSerializer < ActiveModel::Serializer
attributes :name, :email # because I want expose only these attributes in API
has_many :articles # and show only articles in the API
end
API控制器:
module Api
class UsersController < Api::BaseController
def index
render json: User.includes(:articles) # this is API handler and I want only this controller to use the serializers
end
end
end
但我希望现有的UsersController
能够正常工作,因为我没有任何序列化工具。现有的控制器是一个典型的控制器,带有视图模板等
所以问题是在项目中添加序列化程序(对于API控制器)会破坏现有的几个地方render json:
的控制器。
更新 在路线:
resources :users
namespace :api { resources :users }
答案 0 :(得分:0)