Django Rest框架,一个APIVIEW的不同端点URL

Django Rest框架,一个APIVIEW的不同端点URL,django,api,django-rest-framework,Django,Api,Django Rest Framework,我正在为我的API项目使用Django Rest框架。现在我有了一个带有post和get方法的APIVIEW。如何仅为特定的get或post添加不同的端点 class UserView(APIVIEW): def get(self, request, format=None): ..... pass def post(self, request, format=None): ..... pass 现在在urls.py中,我想要如下内容: url

我正在为我的API项目使用Django Rest框架。现在我有了一个带有post和get方法的APIVIEW。如何仅为特定的get或post添加不同的端点

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()),
]
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()),
]

用户
仅接受
获取
-请求和
用户内容
仅接受
发布
-请求。

不要这样做。您已经可以在
APIView
中分别处理不同类型的请求。您可以创建两个不同的
APIView
s,也可以在
get
post
方法中处理此问题。您可以尝试以下方法:

urlpatterns = [
    url(r'^user\/?$', UserView.as_view()),
    url(r'^user_content\/?$', UserView.as_view()),
]
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()),
]

这只是一个例子。如果每个请求都有特定的参数,则可以从这些参数中识别请求的类型。你不必像我上面做的那样放入额外的布尔值。检查这种方式,看看是否适合您。

不要这样做。您已经可以在
APIView
中分别处理不同类型的请求。您可以创建两个不同的
APIView
s,也可以在
get
post
方法中处理此问题。您可以尝试以下方法:

urlpatterns = [
    url(r'^user\/?$', UserView.as_view()),
    url(r'^user_content\/?$', UserView.as_view()),
]
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()),
]

这只是一个例子。如果每个请求都有特定的参数,则可以从这些参数中识别请求的类型。你不必像我上面做的那样放入额外的布尔值。检查这种方式,看看是否适合您。

这将违反REST api标准。因此,我强烈建议您不要这样做。这将违反RESTAPI标准。所以,我强烈建议你不要这样做。