9
在api中tag中json和form同时存在时,先进行form,传递的是json也会报“field xxx not set”,查看代码:
// Parse parses the request.
func Parse(r *http.Request, v interface{}) error {
if err := ParsePath(r, v); err != nil {
return err
}
if err := ParseForm(r, v); err != nil {
return err
}
if err := ParseHeaders(r, v); err != nil {
return err
}
return ParseJsonBody(r, v)
}
先执行了ParseForm,如果只是传json,就会报错。能否先使用strings.Contains(r.Header.Get(ContentType), ApplicationJson)之类代码判断提交的是json还是form,再进行处理。