Go言語でSansanのAPIを呼ぶ

準備

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

Go言語で実装

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


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) //表示

}