django-rest-framework 接受 JSON 数据吗?

新手上路,请多包涵

我使用 django-rest-framework 创建了 RESTFul API。用户端点是: /api/v1/users

我想创建一个新用户,所以我以 JSON 格式发送用户数据:

 {
    "username": "Test1",
    "email": "test1@gmail.com",
    "first_name": "Test1",
    "last_name": "Test2",
    "password":"12121212"
}

我正在使用 Google Chrome 扩展 Postman 来测试 API。但是,发送请求后,用户数据并未保存。响应包含此错误:

 {
    "detail": "Unsupported media type \"text/plain;charset=UTF-8\" in request."
}

这是 Postman 中的请求详细信息:

Postman API 请求 django-rest-framework 报错

原文由 Elisa 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 621
2 个回答

您错过了在标头部分添加 Content-Type 标头。只需将 Content-Type 标头设置为 application/json 它应该可以工作。

见下图:

邮差

此外,您可能还需要在标头中包含 CSRF 令牌,以防在使用 Postman 发出 POST 请求时出现错误 {"detail": "CSRF Failed: CSRF token missing or incorrect."} 。在这种情况下,添加一个 X-CSRFToken 标头,其值也作为 CSRF 令牌值。

原文由 Rahul Gupta 发布,翻译遵循 CC BY-SA 3.0 许可协议

我发布这个答案以防有人遇到像我这样的问题。

我正在开发一个使用 Angular 2 的前端应用程序和一个由 Django Rest Framework 制作的 API,我过去常常发送带有以下标头的请求:

 'Content-Type': 'application/json'

它工作正常,直到我在 Fire Fox 上尝试它并且我无法加载所需的数据并且我通过添加以下标头解决了它

'Content-Type': 'application/json',
'Accept': 'application/json'

这是一个解释, Content-Type 告诉服务器什么是数据的内容类型,而 Accept 告诉它客户端将接受什么内容类型。

这是关于这个问题的一个很好的明确答案:

https://webmasters.stackexchange.com/questions/31212/difference-between-the-accept-and-content-type-http-headers

原文由 Khaled Al-Ansari 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题