2

API を作成していますが、オブジェクトを表現する方法について質問があります。

一連のプロパティを持つ記事を含むシステムがあると想像してください。これらのプロパティの一部は複雑です。たとえば、記事の作成者が別のオブジェクトを参照しています。システム内のすべての記事を取得するための URL と、特定の記事を取得するための別の URL があります。

これを実装するための私の最初のアプローチは、同じオブジェクト Article の 2 つの表現を作成することです。これは、すべての記事を要求するときに、記事に関するすべての情報を取得するのではなく、たとえばタイトル、日付と作成者の名前 (Author オブジェクト全体ではなく)。タグやコンテンツなどの他のプロパティは除外されます。この下にあるアイデアは、すべての記事の反応を少し軽くしようとすることです。

次に、クライアント側に進みます。たとえば、Android 用の SDK を実装することにします。したがって、最初のステップは、API から取得した情報を格納するオブジェクトを作成することです。ここで、Article オブジェクトを定義したいので問題が発生しますが、2 つのバージョンが必要になり、実装が難しくなるだけでなく、使用も難しくなります。

だから私の質問は、API を定義するとき、リクエストの結果を送信するが、より困難なサービスを使用する価値はなく、常に同じバージョンのオブジェクトを取得して、より重い応答を生成する必要がありますが、サービスを使いやすくしますか?

4

2 に答える 2

1

私も記事を扱う会社で働いており、データを公開するための REST API もあります。

あなたは正しい道を進んでいると思いますが、私はそれをさらに一歩進めます。これらは、API 内の大きなエンティティに対する潜在的な 3 つの呼び出しです。

  1. 索引。記事の場合、これは /articles のようなものになります。記事 ID のリストを返すだけです。フィルター、並べ替えなどにパラメーターを追加できます。非常に軽量で、非常に便利であることがわかりました。

  2. ヘッダー/ミニ/ライト バージョン。これらは、さまざまなユース ケースに対応すると思われる重要な分野にすぎません。私たちの場合、上位 5 つの記事を表示したいユースケースがたくさんあります。そのような場合、タイトル、著者、および発行日のみを表示します。これらのフィールドは、「ヘッダー」記事または「ライト」記事に属します。記事全体を返したくないので、これは AJAX 呼び出しに特に役立ちます (私たちにとって、オブジェクトは非常に大きいです)。

  3. フルバージョン。これは完全な記事です。すべてのテキスト/段落/画像参照 - すべて。それは重い電話ですが、利用可能なものは何でも手に入れることが保証されます.

次に、オブジェクトをそのままにしておくには、規律が必要です。理想的には、ユーザーは (2) で説明されているバージョンを取得して時間を節約できますが、必要な場合は (3) を使用します。

人々が興味を持っているフィールドのみを返す動的な方法を検討しましたが、それは多くの実装になります。基本的には、ユーザーが /article に移動して、サンプルの JSON 結果を表示できるようにするという考えでした。次に、ユーザーは返してほしいフィールドをクリックして、トークンを取得できます。次に、トークンをパラメーターとして API に渡すと、API はどのフィールドを返すかを認識します。

動的スキーマを作成します。たくさんの仕事があり、私はそれをやり遂げることはできませんでしたが、創造的になりたいのであれば、できることがわかります.

于 2013-01-31T04:09:48.600 に答える