You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Postman请求报Unsupported media type 'application/json'错误?

解决Postman请求DRF API返回415 Unsupported Media Type错误

下面是针对该问题的具体排查和解决步骤:

1. 验证Postman的Content-Type请求头

  • 直接查看Postman的Raw请求头,确认Content-Type的值是纯application/json,无多余空格、拼写错误或额外后缀(比如application/json; charset=utf-8可能会被部分解析器识别异常,优先用纯格式测试)。
  • 操作:Postman中切换到Headers标签,手动删除原有Content-Type后重新添加,确保键值对准确。

2. 确认DRF解析器配置

即使你说已指定解析器,仍需检查配置是否生效:

  • 视图级配置:确保视图明确包含JSONParser:
    from rest_framework.parsers import JSONParser
    
    class ProvisionCustomerView(APIView):
        permission_classes = [IsAuthenticated]
        serializer_class = ProvisionCustomerSerializer
        parser_classes = [JSONParser]  # 必须添加这一行
    
        def post(self, request):
            customer_data = request.data
            # 后续业务逻辑
    
  • 全局配置:如果用全局解析器,在settings.py中确认:
    REST_FRAMEWORK = {
        'DEFAULT_PARSER_CLASSES': [
            'rest_framework.parsers.JSONParser',
            # 其他需要的解析器(如FormParser等)
        ]
    }
    

3. 检查Postman请求体格式

  • 确保请求体是合法JSON格式:在Postman的Body标签选择Raw,格式下拉框选JSON,输入内容必须符合JSON语法(比如用英文引号、正确的逗号分隔),示例:
    {"name": "test_customer", "email": "test@example.com"}
    
  • 避免混用form-data/x-www-form-urlencoded模式和JSON请求头,这会导致媒体类型不匹配。

4. 排查中间件干扰

部分自定义中间件可能修改请求头,导致DRF无法正确识别Content-Type:

  • 临时注释掉项目中自定义的中间件,重新测试请求,若恢复正常则逐个排查中间件的逻辑。

5. 对比单元测试与Postman的请求差异

单元测试通常会严格按照DRF要求构造请求,可通过以下方式对比差异:

  • 在settings.py开启Django请求日志,查看实际收到的请求头和请求体:
    LOGGING = {
        'version': 1,
        'disable_existing_loggers': False,
        'handlers': {'console': {'class': 'logging.StreamHandler'}},
        'loggers': {
            'django.request': {
                'handlers': ['console'],
                'level': 'DEBUG',
                'propagate': False,
            }
        }
    }
    
  • 启动项目后,观察控制台输出的请求信息,对比单元测试和Postman请求的Content-Type、请求体是否一致。

内容的提问来源于stack exchange,提问作者Saul Feliz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 15:31:05