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編)