/home/by-natures/dev*

ソフトウェア開発者としての技術的なメモと、たまに普通の日記。

2018/10/26 Go 言語での REST API クライアント

一昨年、渋谷のセンター街にハロウィン見学に行ったのですが、それはもう大変なお祭り騒ぎでした。今週末がハロウィンのピークかもしれませんね。

我が家もなんとなくハロウィン気分を味わいたかったので、鏡にハロウィンのステッカーを貼ってみました。ちょっとうっとおしいですが家の中が賑やかです。

net/http ライブラリの使い方

以下の Qiita に、REST API を叩く方法について詳しく紹介されていました。

qiita.com

ただ、デフォルトの HTTP パッケージ(net/http)を使うなという記事もあります。趣旨としてはタイムアウトが設定できないので goroutine をハングアップさせてしまうということですが、Go 1.7 からタイムアウトが設定できるようなので、この問題は解決されているようです。

上の Qiita のページの単純アクセス1番だと、 net/http の DefaultClient が利用され、タイムアウトが設定されないため、タイムアウトを設定するためにはクライアントオブジェクトは自分で用意する必要があります。

medium.com

JSON の Unmarshalize

REST API で問い合わせた結果が JSON なので、それを Unmarshalize したいので調べたところ、ほぼ YAML と同じ方法で行えました。簡単にかけて便利です。

Java でも Jackson がフィールド名から予測してよしなにオブジェクトを作ってくれるのでどちらもシンプルなんですが、何だか Go 言語の方がシンプルに見えます。Hadoop コンポーネントだと Jackson のバージョンで競合しまくるので、その印象強いだけかもしれませんが。。。

Go by Example: JSON