Goのnet/httpでform data送る方法

「Goのnet/httpでform data送る方法」のアイキャッチ画像

LINE notificationを送信するにあたって、form dataで送信を行なったので、そのコードシェアしておきます

func (line LineNotification) send() {
	token := ""
	uri := "https://notify-api.line.me/api/notify"
	data := url.Values{}
	data.Set("message", line.Message)

	client := &http.Client{}

	req, _ := http.NewRequest("POST", uri, strings.NewReader(data.Encode()))
	req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", token))
	req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
	req.Header.Add("Content-Length", strconv.Itoa(len(data.Encode())))

	resp, err := client.Do(req)

	if err != nil {
		log.Fatal(err)
	}

	defer func() {
		err := resp.Body.Close()
		if err != nil {
			log.Fatal(err)
		}
	}()
	fmt.Print("Line message was sent")
}

参考記事

How to make a http url form encoded request in Golang