クライアントがサーバにデータを送ることをHTTPのPOSTと呼ぶ。

今回はチャットワークのマイチャットに「GOからのテスト投稿」という文字列を送ってみる。

チャットワークに投稿するための事前準備として、チャットワークAPI鍵とroomIDを調べておく必要がある。

調べ方は下記の記事を参考にした。

PHPでチャットワークAPIを介してメッセージを投稿してみる


func main() {
	room_id := "36286956"
	url := "https://api.chatwork.com/v2/rooms/" + room_id + "/messages"
	param := "body=GOからのテスト投稿"
	request, error := http.NewRequest("POST", url, bytes.NewBufferString(param))
	if error != nil {
		log.Fatal(error)
	}
}

url := "https://api.chatwork.com/v2/rooms/" + room_id + "/messages"でチャットワークのマイチャットにメッセージを送る変数urlを設定。param := "body=GOからのテスト投稿"で「GOからのテスト投稿」という文を挿入する変数paramを設定する。body=は記載する決まりがある。

request, error := http.NewRequest("POST", url, bytes.NewBufferString(param))でhttp.NewRequest関数で"POST", url, bytes.NewBufferString(param)という3つの値で作った変数requestを作成する。

ここまでで、リクエストする前の準備が整った。続いてデータを送るために、下記のコードを追加する。

api_key := "{チャットワークで発行したトークン}"
request.Header.Add("X-ChatWorkToken", api_key)
request.Header.Add("Content-Type", "application/x-www-form-urlencoded")
response, error := http.DefaultClient.Do(request)
if error != nil {
	log.Fatal(error)
}
fmt.Println(response)

チャットワークの決まりとして、リクエストにapi_key を含めたヘッダを追加する(上の3行)。

response, error := http.DefaultClient.Do(request)でDo関数を使ってサーバにrequestを送信し、その結果をresponseという変数に挿入する。

最後にfmt.Println(response)を実行すると、下記の200 OK が出てデータが送れたことがわかる。

&{200 OK 200 HTTP/1.1 1 1 map[Content-Type:[application/json; charset=utf-8] Date:[Thu, 19 Apr 2018 05:14:54 GMT] Vary:[User-Agent] Content-Length:[36] Server:[nginx] X-Ratelimit-Limit:[100] X-Ratelimit-Remaining:[99] X-Ratelimit-Reset:[1524115194] Connection:[keep-alive]] 0xc042034080 36 [] false false map[] 0xc0420f4000 0xc04209c2c0}
[Finished in 1.544s]

チャットワークを開いて動作を確認してみる。


一連のコードを下記に記載する。

func main() {
	room_id := "{チャットワークのルームID}"
	url := "https://api.chatwork.com/v2/rooms/"   room_id   "/messages"
	param := "body=GOからのテスト投稿"
	request, error := http.NewRequest("POST", url, bytes.NewBufferString(param))
	if error != nil {
		log.Fatal(error)
	}
	api_key := "{チャットワークから発行されたトークン}"
	request.Header.Add("X-ChatWorkToken", api_key)
	request.Header.Add("Content-Type", "application/x-www-form-urlencoded")
	response, error := http.DefaultClient.Do(request)
	if error != nil {
		log.Fatal(error)
	}
	fmt.Println(response)
}

関連記事

PHPでチャットワークAPIを介してメッセージを投稿してみる

Google Apps Scriptからチャットワークに投稿してみる