В api rest, когда тело установлено в "{}", декодер json не выдаст ошибку.Это заставляет проверить, является ли целевая структура все еще nil
.
. Мне нужно проверить, должна ли библиотека работать так, или это проблема с ней.
// Client Side this request
req, err := http.NewRequest("POST", "url", strings.NewReader("{}") )
// Curl equivalent:
curl -X POST -d '{}' http://api:8080/r/primitives/multiply
// Server side
type Operands struct {
Values []float64 `json:"Values"`
}
func handler(req *http.Request, res *http.Response) (string, error) {
operands := Operands{}
err := json.NewDecoder(req.Body).Decode(&operands)
if err != nil {
res.StatusCode = 400
res.Status = http.StatusText(res.StatusCode)
http.StatusText(res.StatusCode)
return "", err
}
operands.Values[0] // It will fail here.
}
Редактировать 1: Декодер работает нормально с пустым телом "" с генерируемой ошибкой и отлично работает с правильным телом, подобным этому: {"Values" : [ 5.0 , 2.0 ]}
Редактировать 2: Проблема здесь в том, что с "{}"body, он не вернет ошибку при декодировании, вместо этого он сохранит целевую структуру как nil.