这个报错场景为 :
- Gin框架
- 编写POST请求方式接口
- 使用结构体绑定方式接受参数
该坑现象为 :
- 当结构体绑定参数失败时(即参数有误、传错时),httpcode为400,无论开发者如何强制返回httpcode,code就是400
原因 :
- 这些方法MustBindWith在引擎盖下使用。
- 如果存在绑定错误,则请求被中止c.AbortWithError(400, err).SetType(ErrorTypeBind)。这将响应状态码设置为400,并将Content-Type标题设置为text/plain; charset=utf-8。
- 请注意,如果在此之后尝试设置响应代码,将会导致警告
[GIN-debug] [WARNING] Headers were already written. Wanted to override status code 400 with 42
2。如果您希望更好地控制行为,请考虑使用ShouldBind等效的方法。
解决方法 :
- 绑定结构体的方法一概不适用【BindJSON】改为【ShouldBind】