Go言語からkintone REST API を叩いて、kintoneアプリのフィールド情報を取得するサンプルです。
APIは下記参照
https://developer.cybozu.io/hc/ja/articles/204783170#anchor_getform_fields
環境
- go version go1.14.2 darwin/amd64
- Mac
設定ファイル
GoDotEnvライブラリを利用。
.envファイルにkintone接続情報を設定します。
https://github.com/joho/godotenv
サンプルコード
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"io/ioutil"
"log"
"net/http"
"os"
"github.com/joho/godotenv"
)
func main() {
err := godotenv.Load()
if err != nil {
log.Fatal("Error loading .env file")
}
ba, _ := fetchFieldsJson(os.Getenv("APP"), os.Getenv("SUB_DOMAIN"), os.Getenv("API_TOKEN"))
var out bytes.Buffer
if err := json.Indent(&out, ba, "", " "); err != nil {
log.Fatal("Error json indent", err)
}
out.WriteTo(os.Stdout)
}
func fetchFieldsJson(appid string, subdomain string, apitoken string) ([]byte, error) {
client := &http.Client{}
type Body struct {
App string `json:"app"`
}
data := Body{appid}
body, err := json.Marshal(data)
if err != nil {
log.Fatal("Error JSON Encode")
}
req, err := http.NewRequest("GET", "https://"+subdomain+".cybozu.com/k/v1/app/form/fields.json", bytes.NewReader(body))
if err != nil {
log.Fatal("Error request")
}
req.Header.Add("X-Cybozu-API-Token", apitoken)
req.Header.Add("Content-Type", "application/json")
resp, err := client.Do(req)
if err != nil {
log.Fatal("Error client")
}
defer resp.Body.Close()
fmt.Println(resp.Status)
ba, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal("Error read")
}
return ba, err
}
参考
- Go-lang https://golang.org/
- Package http https://golang.org/pkg/net/http/
- kintoneアプリのフィールド情報取得 https://developer.cybozu.io/hc/ja/articles/204783170#anchor_getform_fields
Go言語からkintoneのレコード取得の方法は、下記記事が参考になります。
kintone REST API について (GET編)