0

私はこれらの2つのリソースを使用してRESTfulAPIを構築しました(tastypieを使用):

class PhotographerResource(ModelResource):
    album = fields.ToManyField('core.api.AlbumResource', 'album_set')
    class Meta:
        queryset = Photographer.objects.all()
        resource_name = 'photographer'
        authorization = Authorization()


class AlbumResource(ModelResource):

    artist = fields.ForeignKey(PhotographerResource, 'photographer', full=True)

    class Meta:
        queryset = Album.objects.all()
        resource_name= 'albums'
        authorization = Authorization()

アクセスする/api/v1/albums/1と、次の結果が得られます。

{
"album": ["/api/v1/albums/4/", "/api/v1/albums/5/"],
"photographer_name": "Jimi Hendrix",
"photographer_thumbnail": "http://upload.wikimedia.org/wikipedia/commons/thumb/0/0d/Katatonia_in_2004.jpg/300px-Katatonia_in_2004.jpg",
"biography": "Jimmi Hendrix is an awesome musician man...",
"id": "1",
"page_link": "http://ahmetkaya.com/",
"resource_uri": "/api/v1/artists/1/",
"slug": "jimi-hendrix"
}

これで、Backbonejsであるフロントエンドで、写真家のアルバムを取得するときに、albumオブジェクト、fetchつまりサーバーからのデータを作成して、ビューにレンダリングする必要があります。今私の質問は、この方法(サーバーに多くのリクエストを送信する)はページの読み込みを遅くし、UXとアプリのパフォーマンスに悪影響を与えませんか?リソース間の関係を設計するためのより良い方法はありますか?または、RESTful APIをとを処理するDjangoビューに置き換える方が良いですsavefetch、それともこれは「適切な」方法ではありませんか?学習中は規則とベストプラクティスに従いたいのですが、Backbonejsには実際には規則がないようです。

ありがとう

4

1 に答える 1

1

バックボーン側では、Album コレクションを作成し、その URL を /api/v1/albums に設定して、コレクションでフェッチを呼び出すことができます。これにより、1 つの http リクエストですべてのアルバムが取得されます。/api/v1/albums/byname/jonathancoulton や /api/v1/albums/bytitle/codemonkey などでフィルタリングする必要がある場合は、url を関数にすることもできます。この機能を頻繁に使用する場合は、コレクションにカスタム fetch 関数も設定しました

于 2012-07-18T12:50:52.497 に答える