我是 Go 的新手,虽然到目前为止我已经很好地理解了其中的大部分内容,但我无法确切地弄清楚应该如何处理 JSON。
所以假设我在前端有一个访问令牌。我想传递它并想向 API 发出请求以验证它。
这是传递给后端的 json:
{
"accessToken": "xxxxxx"
}
type test_struct struct {
AccessToken string `json:"accessToken"`
}
func validateFacebookLogin(w http.ResponseWriter, r *http.Request) {
decoder := json.NewDecoder(r.Body)
var t test_struct
err := decoder.Decode(&t)
if err != nil {
panic(err)
}
tokenCheck := "xxxxxxxxx|xxxxxxxxxxxxxxxxxxxxxxxxxxx"
req, err := http.NewRequest("GET", "https://graph.facebook.com/debug_token", nil)
if err != nil {
log.Print(err)
os.Exit(1)
}
q := req.URL.Query()
q.Add("input_token", t.AccessToken)
q.Add("access_token", tokenCheck)
req.URL.RawQuery = q.Encode()
resp, err := http.Get(req.URL.String())
defer resp.Body.Close()
bodyBytes, _ := ioutil.ReadAll(resp.Body)
bodyString := string(bodyBytes)
fmt.Println(bodyString);
json.NewEncoder(w).Encode(map[string]string{"message": "FINE"})
json.NewEncoder(w).Encode(resp)
}
我能找到的所有文档似乎都表明应该为所有 JSON 响应/请求创建一个结构(除非我误解了)。那不是很不方便吗?如果我有一个非常大的嵌套 JSON 响应怎么办?我必须创建完整响应的结构吗?
我在上面使用的方法是 ioutil 不好的做法吗?我在哪里可以传回整个字符串表示并在前端管理解码?
我想我的主要问题是,什么时候应该将我的 JSON 分配给结构?什么是最佳实践?如果我只想立即将响应返回给前端,有什么意义吗?
假设我确实想在后端维护数据,是否有任何“更好”的方法来处理大型响应?
MM们
相关分类