鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: makliu

[已解决]DRF 接口求助

[复制链接]
发表于 2023-12-30 15:22:02 | 显示全部楼层
makliu 发表于 2023-12-30 15:21
确定是 设置 了请求头,    并用 JSON.stringify() 把 ...

如果你已经设置了请求头,并使用JSON.stringify()将请求数据发送给接口,但在DRF视图中仍然无法获取到正确的请求体数据,那么可能是由于DRF默认不支持处理DELETE请求的请求体数据导致的。通常,DELETE请求的请求体是没有意义的,因为它主要用于删除资源而不是传递数据。

在DRF中,可以通过以下两种方式来处理DELETE请求中的数据:

1. 使用URL参数:将需要传递的数据放在URL中,而不是请求体中。例如,修改你的URL模式和视图函数,将需要删除的资源ID作为URL参数传递:

  
  1. # urls.py
  2.    from django.urls import path
  3.    from .views import YourDeleteView
  4.    
  5.    urlpatterns = [
  6.        path('your-resource/<int:pk>/', YourDeleteView.as_view(), name='your-delete-view'),
  7.    ]
复制代码

  
  1. # views.py
  2.    from rest_framework.views import APIView
  3.    from rest_framework.response import Response
  4.    
  5.    class YourDeleteView(APIView):
  6.        def delete(self, request, pk):
  7.            # 根据pk执行删除操作
  8.            return Response({'message': '删除成功'})
复制代码

   现在,你可以将要删除的资源ID作为URL参数发送DELETE请求。

2. 使用请求头:在发送DELETE请求时,将需要传递的数据放在请求头中,而不是请求体中。你可以在请求头中定义自定义的X-Your-Data字段,并在视图中获取它:

  
  1. wx.request({
  2.      url: 'YOUR_API_URL',
  3.      method: 'DELETE',
  4.      header: {
  5.        'Content-Type': 'application/json',
  6.        'X-Your-Data': JSON.stringify({
  7.          // 请求数据
  8.        })
  9.      },
  10.      success: function(res) {
  11.        // 处理成功响应
  12.      },
  13.      fail: function(res) {
  14.        // 处理失败响应
  15.      }
  16.    });
复制代码

   在DRF的视图中,你可以使用`request.META`字典来获取请求头信息:

  
  1. class YourDeleteView(APIView):
  2.        def delete(self, request, pk):
  3.            your_data = request.META.get('HTTP_X_YOUR_DATA')
  4.            # 处理你的数据
  5.            return Response({'message': '删除成功'})
复制代码

希望以上两种方法能够解决你在处理DELETE请求时无法获取请求体数据的问题。如果还有其他疑问,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-24 01:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表