簡體   English   中英

對非RESTful API使用django-tastypie

[英]Using django-tastypie for a non-RESTful API

假設您需要編寫一個簡單的非RESTful API,並想使用django-tastypie做到這一點 ,您將如何做?

Tastypie僅提供與數據模型緊密耦合的Resource

有沒有一種方法可以將asteapie的其他實用程序用於API(例如身份驗證,序列化等),但可以將其用於“簡單” API? 當然,這可以寫成一個簡單的視圖,但是那樣的話,您可能會錯過了好看的其他東西。

一個簡單的示例是一個接收字符串並反轉它的API。

這是prepend_urls的目的-您可以將自定義端點添加到現有方法中。 開箱即用的它們就像普通視圖一樣工作,但是現在您可以從Resource中調用所需的所有功能-並返回純HttpResponse或在現有的Deliciouspie函數上搭載以返回豐富的對象。

例如,如果我有一個User資源,並且想提供一個端點來確定用戶當前是否通過返回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)替換return HttpResponse("1") return self.get_detail(request, id=request.user.id) -有效地模擬呼叫/user/?id=[authenticated user's ID]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM