UnicodeDecodeError/请求体解码失败:POST JSON 的隐形炸弹

现象 接口偶发 500,日志含 UnicodeDecodeErrorjson.decoder.JSONDecodeError

原因 客户端未设置 Content-Type: application/json; charset=utf-8,或传了混合编码;读取 request.body 后未做异常捕获。

稳妥实现

``` import json from django.http import JsonResponse

def api_view(request): try: data = json.loads(request.body.decode("utf-8")) except (UnicodeDecodeError, json.JSONDecodeError): return JsonResponse({"error": "invalid json"}, status=400) ``` # 继续处理

DRF 用 request.data 更安全,同时在DEFAULT_PARSER_CLASSES启用JSONParser

这类问题在接三方回调时高发,我在 gplpal 总结了统一的解析与兜底策略。

评论 0