首页 > 解决方案 > 为什么 request.body 在使用美味派的调用自定义 API 时为空?

问题描述

POST API 调用面临问题。我正在使用tastepieprepend_urls wrap_view登录自定义api。
我正在使用以下版本:
Tastypie 0.14.3
Tastypie_swagger 0.1.4
Django 2.2.12
Python 3.5.2

我正在使用下面的反序列化方法从有效负载中抽象数据。我不知道为什么我的 request.body 是空的。

data = self.deserialize(
            request, request.body,
            format=request.META.get('CONTENT_TYPE', 'application/json')
        )

如果我试图将请求数据转换为 json,那么它会引发 Request is not valid JSON。根据我的调试,它正在使用名为 deserialize 的包方法并 into serialize.pyof sweetpie。它使用 from_json 方法。request.body 也返回空白查询字典。我正在接收使用 request.GET 传递给 POST 调用的数据。是因为升级版的python和tasticpie造成的吗?我做错了什么吗?
这是我的请求的一些输出。了解场景会很有帮助。
我将此参数放入 GET 而不是 request.body

request.GET
<QueryDict: {'username': ['abc@gmail.com'], 'password': ['123456']}>

空 POST QueryDict

request.POST
<QueryDict: {}>

请求电话:

request
<WSGIRequest: POST '/api/v1/user/login/?username=abc%40gmail.com&password=123456'>
self.method_check(request, allowed=['post'])
'post'
request.body
b''

它应该具有 JSON 有效负载,例如{"username":"password"}. 请建议我该怎么做才能解决以下错误。

{
  "status": "0",
  "message": "Request is not valid JSON."
}

提前致谢!!

标签: pythondjangoapiswaggertastypie

解决方案


推荐阅读