Go言語でSansanのAPIを呼ぶ

準備

名刺管理のSansanはAPIを公開しており、自分の所有する名刺を検索したりすることができる。
今回はそのAPIを使って名刺を検索してみる。
まず、Sansanにログインして「管理者設定」から「外部サービス連携」をクリック。
APIタブをクリックしたページで、APIキーを発行できる。ちなみにAPI利用にも権限があり、権限がないユーザでは発行できない。

Go言語で実装

発行したAPIキーを使ってAPIを呼ぶが、方法は至ってシンプル。
X-Sansan-Api-KeyヘッダにこのAPIキーを入れるだけで良い。
というわけで、会社名で検索するときの、ソースが以下である。

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package main
import (
"encoding/json"
"log"
"net/http"
"net/url"
"github.com/davecgh/go-spew/spew"
)
const (
apiKey = "xxxxxxxxxxxxxxxxxxxxx"
searchURL = "https://api.sansan.com/v1.1/bizCards/search"
)
type SansanRes struct {
HasMore bool `json:"hasMore"`
Data []Card `json:"data"`
}
//本当はもっといろいろあるけど、ざっくりと
type Card struct {
LastName string `json:"lastName"`
FirstName string `json:"firstName"`
Email string `json:"email"`
Mobile string `json:"mobile"`
Tel string `json:"tel"`
DepartmentName string `json:"DepartmentName"`
Title string `json:"title"`
CompanyName string `json:"companyName"`
PostalCode string `json:"postalCode"`
Address string `json:"address"`
PersonId string `json:"personId"`
}
func main() {
values := url.Values{}
values.Add("companyName", "test") //会社名をtestで検索
values.Add("range", "all") //会社全体で持ってる名刺を検索
req, err := http.NewRequest("GET", searchURL+"?"+values.Encode(), nil)
if err != nil {
log.Fatal("http request error", err.Error())
}
req.Header.Set("X-Sansan-Api-Key", apiKey)
client := new(http.Client)
resp, err := client.Do(req)
if err != nil {
log.Fatal(err.Error())
}
defer resp.Body.Close()
dec := json.NewDecoder(resp.Body)
var res SansanRes
dec.Decode(&res)
spew.Dump(res) //表示
}