[Go] CoinMarketCapのAPIを操作しよう

CoinMarketCapとは?
-> 急速に成長している仮想通貨スペースにおける世界で最も参照されている価格追跡ウェブサイトです。

まずDeveloper向けのアカウントを作成し、管理画面でAPI_KEYをコピーして、Developer向けページのIntroductionを一通り目を通します。
https://pro.coinmarketcap.com/account
https://coinmarketcap.com/api/documentation/v1/#section/Introduction

$ curl -H “X-CMC_PRO_API_KEY: ${API_KEY}” -H “Accept: application/json” -d “start=1&limit=5000&convert=USD” -G https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest

おおおおおおおおおおお、なんかすげえ

go

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package main
 
import (
    "fmt"
    "io/ioutil"
    "log"
    "net/http"
    "net/url"
    "os"
)
 
func main(){
    client := &http.Client{}
    req, err := http.NewRequest("GET", "https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest", nil)
    if err != nil {
        log.Print(err)
        os.Exit(1)
    }
 
    q := url.Values{}
    q.Add("start", "1")
    q.Add("limit", "5000")
    q.Add("convert", "USD")
 
    req.Header.Set("Accepts", "application/json")
    req.Header.Add("X-CMC_PRO_API_KEY", "${API KEY}")
    req.URL.RawQuery = q.Encode()
 
    resp, err := client.Do(req);
    if err != nil {
        fmt.Println("Error!")
        os.Exit(1)
    }
    fmt.Println(resp.Status)
    respBody, _ := ioutil.ReadAll(resp.Body)
    fmt.Println(string(respBody));
}

取得する量が多すぎるな
1回のリクエストで25credit使うとなると、1日12回程度しかrequestできんな。流石にこれだと使い物にならんが、イメージは出来た。