クライアントがサーバにデータを送ることを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からチャットワークに投稿してみる