golang 处理post、get请求以及string to json格式的转化

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,是用来将请求的string格式转成便于处理的json格式,结构体里面的元素名称的首字母必须是大写!否则容易采坑!

2.Get 请求与post是一样的,只需要将http.NewRequest()里面的方法改成GET即可,这里就不上代码了

你可能感兴趣的:(golang,golang)