【问题标题】:Django Rest Framework, different endpoint URL for one APIVIEWDjango Rest Framework,一个 APIVIEW 的不同端点 URL
【发布时间】:2017-10-02 09:36:42
【问题描述】:

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

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。

【问题讨论】:

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

标签: django api django-rest-framework


【解决方案1】:

不要那样做。您已经可以在APIView 中分别处理不同类型的请求。您可以创建两个不同的APIViews,或者您可以在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()),
]

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-06
    • 1970-01-01
    • 2020-12-07
    • 2017-04-04
    • 1970-01-01
    相关资源
    最近更新 更多