首页 > 解决方案 > 接收 bool 值作为对 http 请求的响应

问题描述

我有两个使用 http 请求和响应相互通信的服务。Repo-1 中的一个特定端点作为响应返回一个布尔值。

response := checkIfPresent(personId)
return c.JSON(http.StatusOK, response)

response是一个布尔值。在客户端,我收到这样的响应。

client := &http.Client{}
responseBody, err := client.Do(request)
if err != nil {
        return false
    }
    
defer responseBody.Body.Close()

response, _ := ioutil.ReadAll(responseBody.Body)

return response 

但是,这里的响应是类型[]byte。如何从中获取布尔值并返回它?

标签: resthttpgo

解决方案


response是字节切片中的 JSON 编码数据,包含字符串true。您必须从 JSON 中解组它。

var resp bool
err := json.Unmarshal(response, &resp)
if err != nil {
  //Do the error handling, and return, for example:
  return false, err
}
return resp, nil

或者只是你可以检查它是否等于字符串“true”

return string(response) == "true"

但稍后如果响应将包含更多数据,则只有解组方式有效。


推荐阅读