初めてGo言語に触れてみる。
お決まりのHello Worldの儀式を済ませたので、早速Goを使ってAPIを叩いてみる。
#環境
CentOS7
go version go1.12.7 linux/amd64
#APIを叩く
サンプルに使ったのは楽天ブックス総合検索API。
せっかくなのでリクエストパラメータに「go言語」を指定してみる。
api_get.go
package main
import (
"fmt"
"io/ioutil"
"net/http"
"net/url"
"os"
)
func main() {
// リクエストパラメータの定義
query_param := url.Values{}
query_param.Add("applicationId", "XXXXXXXX") // XXXXXXXX => apiid
query_param.Add("format", "json")
query_param.Add("keyword", "go言語")
query_param.Add("booksGenreId", "000")
query_param.Add("page", "1")
// クエリパラメータをエンコード
parse_value := query_param.Encode()
// getリクエスト
response, err := http.Get("https://app.rakuten.co.jp/services/api/BooksTotal/Search/20170404?" + parse_value)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
// レスポンスステータスの確認
fmt.Println("status: ", response.Status)
// レスポンスの内容を全て読み込む
body, err := ioutil.ReadAll(response.Body)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
// 読み込んだ中身を表示
fmt.Println(string(body))
}
#結果
一番最初に取れたのは「スターティングGo言語」ですね。
名著がいい感じに取れました。
status: 200 OK
{"count":9,"page":1,"first":1,"last":9,"hits":9,"carrier":0,"pageCount":1,"Items":[{"Item":{"title":"スターティングGo言語","author":"松尾愛賀","artistName":"","publisherName":"翔泳社","label":"","isbn":"9784798142418","jan":"","hardware":"","os":"","itemCaption":"本書は、次世代のプログラミング言語として注目を浴びる「Go言語」をこれから学ぶ人のための学習書です。基本構文から、ゴルーチンなどの特徴的な機能、開発ツールやパッケージの使い方まで、Goプログラムを書いてみたい方に必要な知識を解説しています。Go言語の最新バージョン1.6に対応。使用頻度の高いパッケージの使い方は集中的に解説。巻末には標準ライブラリのパッケージカタログを付けました。便利で役立つ一冊です。"
# => 他にも取得出来ましたが長いので割愛
#まとめ
最近使っているpythonのrequestsのノリで書いてみましたが、全然goっぽくない。
今度は構造体に取得したデータをぶちこんだりして、もっとgoっぽく書けたらいいな。