web-dev-qa-db-ja.com

Restful API-大量のデータを処理する

私は独自のRestful APIを作成しましたが、APIから返された大量のレコードを処理する最良の方法を考えています。

たとえば、GETメソッドを使用してmyapi.co.uk/messages/これにより、すべてのメッセージレコードのXMLが返されます。場合によっては、1000になることもあります。これにより、APIの使用が非常に遅くなります。

誰もがこれに対処する最良の方法を提案できますか?結果をバッチで返し、リクエストでバッチサイズを指定することは標準ですか?

19
LeeTee

APIを変更して追加のパラメーターを含め、アプリケーションから返されるデータのスコープを制限できます。

たとえば、limitおよびoffsetパラメータを追加して、ほんの一部をフェッチすることができます。これは、RESTに従ってページ付けを行う方法です。このようなリクエストにより、メッセージコレクションから21日から30日までの10個のリソースがフェッチされます。このようにして、巨大なデータセットの特定の部分を要求できます。

myapi.co.uk/messages?limit=10&offset=20 

ペイロードを減らす別の方法は、リソースの表現の特定の部分のみを要求することです。 Facebookがこれを行う方法は次のとおりです。

/joe.smith/friends?fields=id,name,picture

これらの方法のいずれかを使用するときは、クライアントが各リソースを検出する方法を提供する必要があることに注意してください。彼らが単にパラメーターを見て、データを求めてそれらを変更し始めるとは限りません。これは、RESTパラダイムの違反になります。回避するために必要なハイパーリンクを提供してください。

RESTful API設計に関するこのプレゼンテーションapigee で表示することを強くお勧めします(スクリーンキャストは「Teach a Dog to REST」と呼ばれています)。そこでは、日常の問題に取り組むための優れた実践と巧妙なアイデアが議論されています。

編集:私がこの回答を投稿して以来、ビデオは何度も更新されています。2013年1月の 第3版をチェックしてください

18
toniedzwiedz