【发布时间】:2021-07-27 19:45:23
【问题描述】:
我有一个简单的 rest API,我需要将状态代码从 getAPI 函数传输到处理程序。我想这个问题是 NewDecoder 只处理响应体。但是我怎样才能解决这个问题,不仅传输正文,而且传输状态码
这里我要选择,如果我有状态码 404 它将是一个 响应,如果我有状态 200 代码,它将是另一个
func handler(w http.ResponseWriter, r *http.Request) {
switch h.Data["action"].(string) {
case "catalogue":
url := "https:...."
resp.getAPI(url)
if resp.StatusCode == 404 {
h.Speech = append(h.Speech, "Call another code.")
} else {
h.Speech = []string{resp.Material.Url}
}
}
在这里我发送请求,在这里我需要将 res.StatusCode 转移到 处理程序
func (resp *api) getAPI(url string) {
req, err := http.NewRequest(http.MethodGet, url, nil)
res, err := client.Do(req)
defer res.Body.Close()
err = json.NewDecoder(res.Body).Decode(&resp)
if err != nil {
log.Println("decode body", err)
}
}
【问题讨论】: