J'essaie de faire une application api V2 pour mes rails avec raisin et grape_active_model_serializer. Mais je n'arrive pas à comprendre comment faire un sérialiseur pour chaque version de mon API.Versioning Grape active_model_serializer
Voici ce que mon api ressemble
app/api/api.rb:
require 'grape-swagger'
class API < Grape::API
prefix 'api'
format :json
formatter :json, Grape::Formatter::ActiveModelSerializers
use ::WineBouncer::OAuth2
<... some code here ...>
mount V1::APIV1
add_swagger_documentation api_version: 'v1',
hide_documentation_path: false,
hide_format: true
mount V2::APIV2
add_swagger_documentation api_version: 'v2',
hide_documentation_path: false,
hide_format: true
end
app/api/v1/apiv1.rb
module V1
class APIV1 < Grape::API
version 'v1', using: :path
mount V1::UsersController
end
end
app/api/v2/apiv2.rb
module V2
class APIV2 < Grape::API
version 'v2', using: :path
mount V2::UsersController
end
end
app/sérialiseurs/v1
class UserSerializer < ActiveModel::Serializer
include Serializer
attributes :email,
:username,
:first_name,
:last_name
app/serializers/v2
class UserSerializer < ActiveModel::Serializer
include Serializer
attributes :email,
:username,
:first_name,
:last_name,
:phone_number,
:adress
et j'ajouté à ma config/application.rb
config.autoload_paths += Dir[Rails.root.join('app', 'serializers', '**/')]
Pour l'instant, le contrôleur des utilisateurs V1 et V2 reviennent le même json sans numéro de téléphone et adresse, comment puis-je dire à mon api v2 d'utiliser le sérialiseur v2?
J'utilise raisin, raisin active_model_serializers, raisin fanfaronnades et raisin Swagger rails