LoginSignup
7
6

More than 5 years have passed since last update.

GoでQiita API v2をつついてみる

Last updated at Posted at 2015-05-18

自鯖でmarkdownで書いていくブログ?をGoで作ろうとしてます
素直にHugo使えというツッコミは当然ありますが、Goの勉強という意味合いであえて自作で地雷を踏んでみようと

  • 「どうせmarkdownで書くならせっかくならQiitaに今まで書いたやつもエントリとして載せたい」
  • 「今後のQiita記事はWebhook使ってブログ側にエントリとして載せられるとして、既存の記事は引っ張れるのかな?」

とQiita APIを眺めてこんな感じになりました
これで自分の過去記事を引っ張ってきます

習作中なのでエラー処理ガバガバ、prettyPrint()は車輪の再発明の予感がするというアレなサンプルですが

main.go
package main;

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

func main() {
    request, _ := http.NewRequest("GET", "https://qiita.com/api/v2/authenticated_user/items", nil)
    request.Header.Set("Authorization", "Bearer 個人用アクセストークン")

    client := new(http.Client)
    response, err := client.Do(request)
    if err != nil{
        log.Fatal(err)
    }
    defer response.Body.Close()

    contents, err := ioutil.ReadAll(response.Body)
    if err != nil{
        log.Fatal(err)
    }

    data, err := prettyPrint(contents)

    fmt.Println(string(data))
}

func prettyPrint(b []byte) ([]byte, error){
    var out bytes.Buffer
    err := json.Indent(&out, b, "", "\t")
    return out.Bytes(), err
}

これで

{
    "id": "記事ID",
    "url": "記事URL",
    "title": "タイトル",
    "body": "Markdownの記事データ",
    "rendered_body": "HTMLに変換された記事データ",
    "created_at": "作成日時",
    "updated_at": "更新日時",
    "tags": [
        {"icon_url": "", "name": "タグ", "versions": []}
    ]
}

というところは引っぱれたので満足

7
6
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
7
6