2017-05-04 88 views
0

我爲我的API項目使用Django Rest Framework。現在我有一個APIVIEW與帖子和獲取方法。我如何爲特定的獲取或發佈添加不同的端點。Django Rest Framework,一個APIVIEW的不同端點URL

class UserView(APIVIEW): 
    def get(self, request, format=None): 
    ..... 
    pass 

    def post(self, request, format=None): 
    ..... 
    pass 

現在在urls.py,我想是這樣的:

urlpatterns = [ 
    url(r'^user\/?$', UserView.as_view()), 
    url(r'^user_content\/?$', UserView.as_view()), 
] 

user只接受GET -request和user_content只接受POST -request。

+0

這將違背REST API標準。所以,我強烈建議你不要這麼做。 –

回答

3

不要這樣做。您已經可以在您的APIView中單獨處理不同類型的請求。您可以創建兩個不同的APIView,或者您可以在getpost方法中處理此問題。你可以嘗試這樣的:

class UserView(APIView): 
    def get(self, request, format=None): 
     is_user_request = request.data.get('is_user_request', False) 
     if is_user_request: 
      # Handle your user request here and return JSOn 
      return JsonResponse({}) 
     else: 
      # Handle your other requests here 
      return JsonResponse({}) 

    def post(self, request, format=None): 
     is_user_content_request = request.data.get('is_user_content_request', False) 
     if is_user_content_request: 
      # Handle your user content request here and return JSOn 
      return JsonResponse({}) 
     else: 
      # Handle your other type requests (if there is any) here 
      return JsonResponse({}) 


urlpatterns = [ 
    url(r'^api/user$', UserView.as_view()), 
] 

這只是一個例子。如果每個請求都有特定的參數,則可以根據這些參數來確定請求的類型。你不必像上面那樣輸入額外的布爾值。檢查這種方式,看看是否適合你。