1

単純な非 RESTful APIを作成する必要があり、それをdjango-tastypieを使用して作成したいとします。

Tastypie はResource、データ モデルに密結合された のみを提供します。

API(認証、シリアル化など)にtastypieの他のユーティリティを使用する方法はありますが、「単純な」APIには使用できますか? もちろん、これは単純なビューとして記述することもできますが、そうすると、tastypie が提供する他の機能を見逃してしまうことになります。

簡単な例は、文字列を受け取ってそれを逆にする API です。

4

1 に答える 1

1

これが目的ですprepend_urls- カスタム エンドポイントを既存のメソッドに追加できます。すぐに使用できるこれらはプレーン ビューと同じように機能しますが、リソースから必要なすべての関数を呼び出すことができるようになり、HttpResponse既存の Tastypie 関数にプレーン s またはピギーバックを返してリッチ オブジェクトを返すことができます。

たとえば、リソースがあり、ユーザーがorUserを返すことによって現在認証されているかどうかを判断するためのエンドポイントを提供したい場合、次のようにします。10

def prepend_urls(self):
    return [
        #...
        url(r"^(?P<resource_name>%s)/is_authenticated?$" % (self._meta.resource_name), self.wrap_view('is_authenticated')),
        #...
    ]
# ...other methods in your Resource...
def is_authenticated(self, request, **kwargs):
    if self._meta.authentication.is_authenticated(request):
        return HttpResponse("1")
    else:
        return HttpResponse("0")

または、認証されたユーザーの実際のユーザー リソースを実際に返したい場合は、(たとえば)への呼び出しを効果的にシミュレートする -return HttpResponse("1")に置き換えることができます。return self.get_detail(request, id=request.user.id)/user/?id=[authenticated user's ID]

于 2013-08-17T18:18:50.127 に答える