2017-05-04 90 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()), 
] 

这只是一个例子。如果每个请求都有特定的参数,则可以根据这些参数来确定请求的类型。你不必像上面那样输入额外的布尔值。检查这种方式,看看是否适合你。