2 回答

TA貢獻1802條經驗 獲得超4個贊
結構標簽是否向 API 用戶拋出錯誤?
不,出于很多原因。
一些結構標簽(例如 json 標簽)僅被包 encoding/json 用于在 JSON 對象元素和結構字段之間進行映射)。
某些 3rd 方包使用其他結構標記(如驗證),如果您不使用該包,則什么也不會發生。
Go(語言及其標準庫)“沒有魔法”。沒有什么神奇的事情發生。如果您需要在 API 端點上進行驗證,您可以使用檢查結構標簽的驗證包,但這不會神奇地發生:您必須調用這些函數并自己返回 API 錯誤。不,我不會在這里推薦一個框架。
要工作,struct 標簽必須是有效的,你的都不是。跑去
go vet
找這類問題。(應該json:"emal" validate:"required"
甚至可能是“電子郵件”)Go 中的錯誤根本不會“拋出”。特別是狀態代碼為 400 Bad Request 的 HTTP 響應不會被“拋出”。它總是有助于使術語正確)。

TA貢獻1830條經驗 獲得超9個贊
如果通過 API 發送的 JSON 不包含Email,則將encoding/json json.Unmarshal其視為Email空字符串。
選項 A:如果空字符串無效Email,您可以在之后檢查空字符串json.Unmarshal
var person Person
err := json.Unmarshal(jsonBlob, &person)
if err != nil{
return err
}
if person.Email == "" {
return errors.New("email cannon be empty"
}
選項 B:如果空字符串有效,您可以創建自定義MarshalJSON以將 JSON 解析為字符串并查找Email鍵。
https://pkg.go.dev/encoding/json#example-package-CustomMarshalJSON
- 2 回答
- 0 關注
- 136 瀏覽
添加回答
舉報