8
4

More than 3 years have passed since last update.

Go で Qiita API を叩いてみる

Last updated at Posted at 2020-01-28

net/httpencoding/json パッケージを使えば簡単にできる。

Jsonをパースした結果を受け取るための構造体をあらかじめ用意してあげる必要はある。

Top Level が配列の場合どうすんだ?って思ったけど、var hoge []構造体 のようにスライスを用意してあげるだけで良かった。

コード

main.go
package main

import (
        "encoding/json"
        "fmt"
        "io/ioutil"
        "log"
        "net/http"
        "time"
)

type Item struct {
        Title     string    `json:"title"`
        CreatedAt time.Time `json:"created_at"`
}

func main() {
        resp, err := http.Get("http://qiita.com/api/v2/users/snaka/items?page=1&per_page=10")
        if err != nil {
                log.Fatal(err)
        }
        defer resp.Body.Close()
        body, err := ioutil.ReadAll(resp.Body)
        if err != nil {
                log.Fatal(err)
        }

        var data []Item // nil slice
        // data := make([]Item, 0) のように要素数0の slice としても良い

        if err := json.Unmarshal(body, &data); err != nil {
                log.Fatal(err)
        }

        for _, item := range data {
                fmt.Printf("%s %s\n", item.CreatedAt, item.Title)
        }
}

変更(2020.1.31)

実行結果

2020-01-29 08:24:56 +0900 +0900 Go で Qiita API を叩いてみる
2020-01-19 12:48:10 +0900 +0900 Goの勉強のため自分のグローバルIPを確認するコマンドを作った
2020-01-18 08:44:06 +0900 +0900 AWS認定 Alexa スキルビルダーに合格したので受験の感想など
2020-01-08 23:00:55 +0900 +0900 npm install で har-validator-5.1.2.tgz が Not Found と言われた
2020-01-07 08:42:34 +0900 +0900 GoでSTUNサーバを使って自分のパブリックIPアドレスを取得
2020-01-05 05:12:38 +0900 +0900 WSL2内で立ち上げたサーバにWindows側からlocalhostで接続する2020-01-04 22:23:55 +0900 +0900 Docker コンテナ内で立ち上げた godoc にホスト側からアクセスできなかった
2019-05-22 17:52:46 +0900 +0900 Cludfront + API Gateway + Lambda の環境でうまくいかない場合のレスポンスとその原因
2019-05-21 10:09:25 +0900 +0900 API Gateway で作成したAPIを独自に用意したCloudFrontディストリビューションで公開する
2019-04-04 17:18:48 +0900 +0900 API Gateway のエンドポイントを nginx で reverse proxy したら"SSL_do_handshake() failed" と言われた

参考

8
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
4