1. POSTリクエスト
package main
import (
"bytes"
"net/http"
"io/ioutil"
)
type getToken struct{
// 用于将string格式转成json格式,取出token
Token string `json:"token"`
}
// 处理post请求
func GetToken() string {
jsonStr :=[]byte(`{ "username": "xxx", "password": "xxx" }`) // 请求时需要带的参数
url:= "url" // 请求的url
req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonStr)) // 发起请求,没有参数时,可将bytes.NewBuffer(jsonStr)改为nil
req.Header.Add("Content-Type", "application/json") // 发起请求时需要的头信息
rst.Header.Add("AUTHORIZATION", token) // 发起请求时需要的头信息,需要多个时,可继续往后面加
client := &http.Client{
} // 处理返回结果
resp, err := client.Do(req)
if err != nil {
// handle error
}
defer resp.Body.Close()
var tokenJson getToken // 定义一个结构体,用来将结果的string格式转成json格式,便于对请求结果进行处理
body, _ := ioutil.ReadAll(resp.Body) // 读取请求结果
tokenGet := string(body) // 请求结果string格式
errJson := json.Unmarshal([]byte(tokenGet), &tokenJson) // 将string 格式转成json格式
if errJson != nil {
initlog.Error.Println(errJson) // 错误写进日志文件
}
return tokenJson.Token // 所需要的请求结果token
}
注:上記のコードで定義された構造getTokenは、要求された文字列形式を便利なjson形式に変換するために使用されます。構造内の要素名の最初の文字は大文字にする必要があります!それ以外の場合は、ピットインするのは簡単です!
2. GetリクエストはPostと同じです。http.NewRequest()のメソッドをGETに変更するだけです。ここにコードはありません。