Выполнение в Rails, что может потребовать более сложного/творческого решения, но в основном с использованием Grape, active_model_serializers (AMS) и grape-kaminari для возврата указательного маршрута (списка) объектов пользователя , и я хотел бы иметь возможность использовать преимущества AMS с кешированием и легко сериализовать объекты, но настроить ответ JSON.Rails Grape API pagination с AMS и пользовательским JSON
Вот винограда:
module API
module V1
class Users < Grape::API
include API::V1::Defaults
include Grape::Kaminari
resource :users do
paginate per_page: 18
get do
users = User.all
paginate users
end
end
end
end
end
И AMS:
class UserSerializer < ActiveModel::Serializer
cache key: 'user', expires_in: 3.hours
attributes :id, :firstname, :lastname, :email, :username
end
Идеальный ответ в формате JSON:
{
users: [
{
id: 1,
firstname: "Daniel",
lastname: "Archer,
email: "[email protected]",
username: "dja"
},
{
id: 2,
firstname: "Fakey",
lastname: "McFakerson,
email: "[email protected]",
username: "fake"
}
],
extras: {
user_count: 300,
new_users_last_5_days: 10,
new_users_last_30_days: 25
}
}
То, что я хотел бы произойти (и возникают проблемы с) является для разбивки количества пользователей в ответе JSON, но включают некоторые дополнительные функции, связанные со всей коллекцией пользователей. Например, у меня может быть 300 пользователей, но я хочу только вернуть первых 18 пользователей (или сколько их основано на параметрах per_page
и page
) и дополнительные данные по всей коллекции.
Так вы говорите, просто добавьте 'Присутствуют: статистов, {user_count: User.count, ...}' на строке после 'постраничной users'? Это не работает для меня. –
Или это требует использования Grape-Entity? –
Я использую его с и без Grape-Entity. –