officiel
https://github.com/rails-api/active_model_serializers/tree/v0.10.6/docs
be rails g serializer api::v1::articles_preview_serializer
app/serializers/api/v1/articles_preview_serializers.rb
class Api::V1::ArticlesPreviewSerializer < ActiveModel::Serializer
#Spécifiez la valeur que vous souhaitez afficher
attributes :id, :title, :updated_at
end
Spécifiez pour la sortie id, title, updated_at
app/controllers/api/v1/articles_controllers.rb
module Api::V1
class ArticlesController < BaseApiController
def index
articles = Article.all.order(updated_at: "DESC")
#S'il y a plusieurs valeurs de réponse, chacune_Utilisez le sérialiseur.
render json: articles, each_serializer: Api::V1::ArticlesPreviewSerializer
end
end
end
Faites-en la même structure hiérarchique que le sérialiseur.
Spécifiez que les articles créés sont dans l'ordre croissant dans l'ordre updated_at.
Base_api_controllers.rb dans la même hiérarchie
class Api::V1::BaseApiController < ApplicationController
end
Request spec
Pour le moment, créez des données factices et consultez-les.
spec/requests/api/v1/article_request_spec.rb
require 'rails_helper'
RSpec.describe "Api::V1::Articles", type: :request do
describe " GET /api/v1/article " do
subject { get(api_v1_articles_path) }
before { create(:article, updated_at: 3.days.ago ) }
before { create(:article) }
before { create(:article, updated_at: 1.days.ago ) }
it "Vous pouvez obtenir une liste d'articles" do
subject
end
end
end
Plus d'informations sur Demande de spécification à une date ultérieure.
Résultat d'exécution
[1] pry(#<RSpec::ExampleGroups::ApiV1Articles::GETApiV1Article>)> res = JSON.parse(response.body)
=> [{"id"=>56, "title"=>"Consequuntur quia corporis perspiciatis.", "updated_at"=>"2020-10-17T22:19:32.120Z"},
{"id"=>57, "title"=>"Molestiae tempore recusandae qui.", "updated_at"=>"2020-10-16T22:19:32.122Z"},
{"id"=>55, "title"=>"Consectetur nam odio voluptatibus.", "updated_at"=>"2020-10-14T22:19:31.192Z"}]
class Api::V1::UserSerializer < ActiveModel::Serializer
#Spécifiez la valeur que vous souhaitez afficher
attributes :id, :name, :email
end
Articles fixesPreviewSerializer
class Api::V1::ArticlesPreviewSerializer < ActiveModel::Serializer
#Spécifiez la valeur que vous souhaitez afficher
attributes :id, :title, :updated_at
belongs_to :user, serializer: Api::V1::UserSerializer
end
Résultat d'exécution
[1] pry(#<RSpec::ExampleGroups::ApiV1Articles::GETApiV1Article>)> res = JSON.parse(response.body)
=> [{"id"=>59,
"title"=>"Esse facere cum rerum.",
"updated_at"=>"2020-10-19T00:06:27.375Z",
"user"=>{"id"=>69, "name"=>"Eduardo Kohler Haley", "email"=>"[email protected]"}},
{"id"=>60,
"title"=>"Cumque aut repudiandae numquam.",
"updated_at"=>"2020-10-18T00:06:27.377Z",
"user"=>{"id"=>70, "name"=>"Collen Stark Brakus", "email"=>"[email protected]"}},
{"id"=>58,
"title"=>"Corporis molestiae dolor odit.",
"updated_at"=>"2020-10-16T00:06:26.556Z",
"user"=>{"id"=>68, "name"=>"Fr. Pauline Sporer Greenfelder", "email"=>"[email protected]"}}]