侧边栏壁纸
  • 累计撰写 60 篇文章
  • 累计收到 10 条评论

Gin-[WARNING] Headers were already written. Wanted to override status code 400 with 200解决

2023-4-7 / 1 评论 / 2056 阅读
温馨提示:
本文最后更新于 2023-4-7,已超过半年没有更新,若内容或图片失效,请留言反馈。

客户端数据请求返回正常,但是状态码是400

Gin框架编写PUT接口使用BindJSON绑定参数报错,当结构体绑定参数有误时, 状态码为400,强制返回200,结果code还是400.

原因 : BindXXX方法都return c.MustBindWith(obj, binding.XXX)。如果绑定错误,则c.AbortWithError(http.StatusBadRequest, err).SetType(ErrorTypeBind)。这将响应状态码设置为400,并将Content-Type标题设置为text/plain; charset=utf-8。如果强制修改成200,就会警告[WARNING] Headers were already written. Wanted to override status code 400 with 200。
解决方法

c.BindJSON(&json)改为c.ShouldBind(&json)

评论一下?

OωO
取消
    1. 头像
      1
      沙发
      hh哈哈哈哈哈哈哈哈哈哈哈哈
      回复