アクティブなリソースを持つAPIに対してページ分割にアプローチするにはどうすればよいでしょうか?私は、APIとAPIを消費するアプリケーションを構築しているので、私は方程式の両端を必要とします。ActiveResourceページ番号
ActiveResource(X-PERPAGEなど)で必要なページのヘッダーを設定する人がいました。
どのような提案も素晴らしいでしょう。最高のソリューションを探しています。次のコードで
はアクティブなリソースを持つAPIに対してページ分割にアプローチするにはどうすればよいでしょうか?私は、APIとAPIを消費するアプリケーションを構築しているので、私は方程式の両端を必要とします。ActiveResourceページ番号
ActiveResource(X-PERPAGEなど)で必要なページのヘッダーを設定する人がいました。
どのような提案も素晴らしいでしょう。最高のソリューションを探しています。次のコードで
は1)パッチactiveresource
module ActiveResource
class Connection
alias_method :origin_handle_response, :handle_response
def handle_response(response)
Thread.current["active_resource_response_#{self.object_id}"] = response
origin_handle_response(response)
end
def response
Thread.current["active_resource_response_#{self.object_id}"]
end
end
end
残りのメソッドは 2を実行した後に、それはあなたが行うことができます雷とサーバー側で)応答を読むための可能性を追加します次
@users = User.page(params[:page]).per(params[:per_page])
response.headers["total"] = @users.total_count.to_s
response.headers["offset"] = @users.offset_value.to_s
response.headers["limit"] = @users.limit_value.to_s
respond_with(@users)
3 )を再びクライアント側で使用します。
users = Users.all(:params=>params)
response = Users.connection.response
@users = Kaminari::PaginatableArray.new(
users,
{
:limit => response['limit'].to_i ,
:offset =>response['offset'].to_i ,
:total_count => response['total'].to_i
}
)
クライアント側のために宝石を追加しましたありがとう!私はこれを調べます! –
ActiveResource 4.0.0 .beta1はActiveResource::Collection
を導入しています(ソースコードの文書によると)は、インデックス応答を解析するためのラッパーです。あなたのAPIレスポンス内の自分のページネーションのデータを埋め込むとActiveResource::Collection
でそれらを取得することができます
class Post < ActiveResource::Base
self.site = "http://example.com"
self.collection_parser = PaginatedCollection
end
:Post
クラスでそれを処理するように設定することができます。
これを使用する方法についての詳細な説明を参照してください:http://javiersaldana.com/2013/04/29/pagination-with-activeresource.html
私はhttps://rubygems.org/gems/activeresource-response – Fivell