[英]How to deserialize nested related JSON Data with django-rest-framework?
[英]django-rest-framework accept JSON data?
我使用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 中请求详细信息的样子:
您错过了在标题部分添加Content-Type
标题。 只需将Content-Type
标头设置为application/json
即可。
见下图:
此外,您可能还需要在标头中包含 CSRF 令牌,以防在使用 Postman 发出POST
请求时收到错误{"detail": "CSRF Failed: CSRF token missing or incorrect."}
。 在这种情况下,添加一个X-CSRFToken
标头,其值也作为 CSRF 令牌值。
如果有人遇到像我这样的问题,我会发布这个答案。
我正在使用Angular 2和使用Django Rest Framework制作的 API 开发前端应用程序,并且我曾经发送带有以下标头的请求:
'Content-Type': 'application/json'
它工作正常,直到我在Fire Fox上尝试它并且我无法加载所需的数据,我通过添加以下标题解决了它
'Content-Type': 'application/json',
'Accept': 'application/json'
这里有一个解释, Content-Type
告诉服务器数据的内容类型是什么,而Accept
告诉它客户端将接受什么内容类型。
这是关于这个问题的一个很好的明确答案:
您需要执行两个步骤来完成此问题:
application/json
值Content-Type
标头Token {YOUR_CUSTOM_TOKEN}
值的Authorization
标头以传递 CSRFToken注意:如果你想通过 session 进行身份验证,你不需要做第二步,但是如果你想在移动端使用这个 API,你必须将 Authorization 标头传递给服务器
我希望它有帮助
您需要通过设置适当的标头来定义内容类型。 如果是 Postman,您需要在 url 字段下设置以下值:
标题:“内容类型”
值:应用程序/json
我必须添加以下内容才能使其正常工作(我正在使用来自客户端的 node-fetch btw 来执行 POST):
supportHeaderParams: true,
headers: { "Content-Type": "application/json; charset=UTF-8" },
如果您想使用 Django Rest Framework 接受 JSON 数据,需要做几件事。
确保发送 application/json 标头: 'Content-Type: application/json'
在settings.py
中选择 JSON Parser
REST_FRAMEWORK = {
'DEFAULT_PARSER_CLASSES': [
'rest_framework.parsers.JSONParser',
],
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.