Edited at

kintone REST API について (POST編)

【更新情報】

2019/03/17 複数件追加の処理を追記

2018/10/27 PHPの処理を追記

2018/10/22 記事公開



はじめに

前回の記事 の続きです。

連載記事一覧

タイトル

0
kintone環境の取得方法 (開発者ライセンス)

1
kintoneの使い方 (データベース編)

2
kintone REST API について (共通事項編)

3
kintone REST API について (GET編)

4

kintone REST API について (POST編) ← 本記事

今回はREST APIを使って、kintoneにデータを 登録 する方法について説明します!


レコード1件を登録

とりあえず、レコード1件 登録する方法について説明します。

文字列1行フィールド (フィールドコード:text) でやります。


共通項目

レコード1件を登録するための共通項目 (共通項目についてはこちら) は、


  • URI


    • https://(サブドメイン名).cybozu.com/k/v1/record.json



  • メソッド


    • POST



  • ヘッダー



    • APIトークン認証 (APIトークン発行時に「レコード追加」にチェックをしてください)

    • Content-Type: applicatioin/json



  • リクエストパラメータ


    • アプリID: 100


    • レコードID: 1 (POSTの場合は必要ありません)


    • レコード情報 ※初登場!(↓で説明します)



となります。


レコード情報

POST (PUT) の場合、どんなレコード情報 で登録(更新)するのか指定する必要があります!

今回であれば「textというフィールドにどんな文字列を入れたいか」です。

それを record オブジェクトで指定します。kintone独自の書き方になるのでぜひ覚えてください!!

//  一般的な書き方

let obj = {
'record': {
'フィールドコード': {
'value': '(挿入したい値)'
}
}
};

// 今回の例だと
let obj = {
'record': {
'text': {
'value': 'sample text'
}
}
};

こんな形で書きます。

ドロップダウンやチェックボックスなど選択肢系のやつは、

valueの値をフィールドの選択肢にある値にしないとエラーになるのでご注意ください!


実装


コマンドライン (curlコマンド)で実行

コマンドラインからレコードを1件登録する場合は、以下のコマンドとなります。

# Windows(PowerShell)の場合

curl.exe -X 'POST' "https://(サブドメイン名).cybozu.com/k/v1/record.json" `
-H 'X-Cybozu-API-Token: YOUR_TOKEN' `
-H 'Content-Type: application/json' `
-d '{"app":100,"record":{"text":{"value":"sample text"}}}'

# Mac(ターミナル)の場合
curl -X 'POST' 'https://(サブドメイン名).cybozu.com/k/v1/record.json' \
-H 'X-Cybozu-API-Token: YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"app":100,"record":{"text":{"value":"sample text"}}}'


JavaScript (Node.js) で実行

Node.jsでレコードを1件登録する場合は、以下のコードとなります。

※ RESTAPIのリクエストに requestモジュールを利用しています。

const request = require('request');

let obj = {
'app': 100,
'record': {
'text': {
'value': 'sample text'
}
}
};

let params = {
url: 'https://(サブドメイン名).cybozu.com/k/v1/record.json',
method: 'POST',
json: true,
headers: {
'X-Cybozu-API-Token': 'YOUR_TOKEN',
'Content-Type': 'application/json',
},
body: obj,
};

request(params, function(err, resp, body) {
if (err) {
console.log(err);
return;
}
console.log(body);
});


Python で実行

Pythonでレコードを1件登録する場合は、以下のコードとなります。

※ RESTAPIのリクエストに requestsモジュールを利用しています。

#!/usr/bin/python

# _*_ coding: utf-8 _*_

import requests

URL = "https://(サブドメイン名).cybozu.com/k/v1/record.json"
PARAMS = {
"app": 100,
"record": {
"text": {
"value": "sample text"
}
}
}
API_TOKEN = "YOUR TOKEN"

def post_kintone(url, api_token, params):
"""kintoneにレコードを1件登録する関数"""
headers = {"X-Cybozu-API-Token": api_token, "Content-Type" : "application/json"}
resp = requests.post(url, json=params, headers=headers)

return resp

if __name__ == "__main__":
RESP = post_kintone(URL, API_TOKEN, PARAMS)

print(RESP.text)


Go で実行

Goでレコードを1件登録する場合は、以下のコードとなります。

package main

import (
"fmt"
"net/http"
"io/ioutil"
"bytes"
)

func main() {
APPID := "100"
url := "https://(サブドメイン名).cybozu.com/k/v1/record.json"
jsonStr := `{"app":` + APPID + `, "record": {"text": {"value": "sample text"}}}`
req, _ := http.NewRequest(
"POST",
url,
bytes.NewBuffer([]byte(jsonStr)),
)
req.Header.Set("X-Cybozu-API-Token", "YOUR_TOKEN")
req.Header.Set("Content-Type", "application/json")

client := new(http.Client)
resp, _ := client.Do(req)

defer resp.Body.Close()

response, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(response))
}


PHPで実行

PHPでレコードを1件登録する場合は、以下のコードとなります。

<?php

$url = 'https://(サブドメイン名).cybozu.com/k/v1/record.json';
$headers = [
'X-Cybozu-API-Token: YOUR TOKEN',
'Content-Type: application/json'
];

$body = [
'app' => 100,
'record' => [
'text' => [
'value' => 'sample text'
]
]
];

// JSONに変換
$json = json_encode($body);

// 初期化
$curl = curl_init($url);

curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_POSTFIELDS, $json);

$response = curl_exec($curl);
echo $response;

curl_close($curl);


レスポンス

レスポンスは非常にシンプルで


{"id":"2", "revision":"1"}

と返ってきます。

idは登録したレコードID (今回だとレコードID:2として登録している)、

revisionは更新履歴のようなものです。


レコード複数件を登録

レコードを複数件登録する方法について説明します。

文字列1行フィールド (フィールドコード:text) でやります。


共通項目

レコード複数件を登録するための共通項目 (共通項目についてはこちら) は、


  • URI


    • https://(サブドメイン名).cybozu.com/k/v1/records.json



  • メソッド


    • POST



  • ヘッダー



    • APIトークン認証 (APIトークン発行時に「レコード追加」にチェックをしてください)

    • Content-Type: applicatioin/json



  • リクエストパラメータ


    • アプリID: 100

    • レコード情報



となります。


レコード情報

登録したいレコードが複数件ある場合は recordss として配列で指定します。

詳しい書き方は こちら をご覧ください。

let obj = {

'records': [{
'text': {
'value': 'sample text1'
}
},
{
'text': {
'value': 'sample text2'
}
},
{
'text': {
'value': 'sample text3'
}
}]
};

それぞれバラバラにレコード情報を記述できるので、

2つ目だけさらに別フィールドも、とかも可能です。

let obj = {

'records': [{
'text': {
'value': 'sample text1'
}
},
{
'text': {
'value': 'sample text2'
},
'text2': {
'value': 'sample text2-1'
}
},
{
'text': {
'value': 'sample text3'
}
}]
};


実装


コマンドライン (curlコマンド)で実行

コマンドラインからレコードを複数件登録する場合は、以下のコマンドとなります。

# Windows(PowerShell)の場合

curl.exe -X 'POST' "https://(サブドメイン名).cybozu.com/k/v1/records.json" `
-H 'X-Cybozu-API-Token: YOUR_TOKEN' `
-H 'Content-Type: application/json' `
-d '{"app":100,"records":[{"text":{"value":"sample text"}},{"text":{"value":"sample text2"}}]}'

# Mac(ターミナル)の場合
curl -X 'POST' 'https://(サブドメイン名).cybozu.com/k/v1/records.json' \
-H {'X-Cybozu-API-Token: YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"app":100,"records":[{"text":{"value":"sample text"}},{"text":{"value":"sample text2"}}]}'


JavaScript (Node.js) で実行

Node.jsでレコードを複数件登録する場合は、以下のコードとなります。

※ RESTAPIのリクエストに requestモジュールを利用しています。

const request = require('request');

let obj = {
'app': 100,
'records': [{
'text': {
'value': 'sample text1'
}
},
{
'text': {
'value': 'sample text2'
}
}]
};

let params = {
url: 'https://(サブドメイン名).cybozu.com/k/v1/records.json',
method: 'POST',
json: true,
headers: {
'X-Cybozu-API-Token': 'YOUR_TOKEN',
'Content-Type': 'application/json',
},
body: obj,
};

request(params, function(err, resp, body) {
if (err) {
console.log(err);
return;
}
console.log(body);
});


Python で実行

Pythonでレコードを複数件登録する場合は、以下のコードとなります。

※ RESTAPIのリクエストに requestsモジュールを利用しています。

#!/usr/bin/python

# _*_ coding: utf-8 _*_

import requests

URL = "https://(サブドメイン名).cybozu.com/k/v1/records.json"
PARAMS = {
"app": 100,
"records": [{
"text": {
"value": "sample text1"
}
},
{
"text": {
"value": "sample text2"
}
}]
}
API_TOKEN = "YOUR TOKEN"

def post_kintone(url, api_token, params):
"""kintoneにレコードを複数件登録する関数"""
headers = {"X-Cybozu-API-Token": api_token, "Content-Type" : "application/json"}
resp = requests.post(url, json=params, headers=headers)

return resp

if __name__ == "__main__":
RESP = post_kintone(URL, API_TOKEN, PARAMS)

print(RESP.text)


Go で実行

Goでレコードを複数件登録する場合は、以下のコードとなります。

package main

import (
"fmt"
"net/http"
"io/ioutil"
"bytes"
)

func main() {
APPID := "100"
url := "https://(サブドメイン名).cybozu.com/k/v1/records.json"
jsonStr := `{"app":` + APPID + `, "records": [{"text": {"value": "sample text"}}, {"text": {"value": "sample text2"}}]}`
req, _ := http.NewRequest(
"POST",
url,
bytes.NewBuffer([]byte(jsonStr)),
)
req.Header.Set("X-Cybozu-API-Token", "YOUR_TOKEN")
req.Header.Set("Content-Type", "application/json")

client := new(http.Client)
resp, _ := client.Do(req)

defer resp.Body.Close()

response, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(response))
}


PHPで実行

PHPでレコードを複数件登録する場合は、以下のコードとなります。

<?php

$url = 'https://(サブドメイン名).cybozu.com/k/v1/records.json';
$headers = [
'X-Cybozu-API-Token: YOUR TOKEN',
'Content-Type: application/json'
];

$body = [
'app' => 100,
'records' => [
'text' => [
'value' => 'sample text'
],
'text' => [
'value' => 'sample text2'
]
]
];

// JSONに変換
$json = json_encode($body);

// 初期化
$curl = curl_init($url);

curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_POSTFIELDS, $json);

$response = curl_exec($curl);
echo $response;

curl_close($curl);


レスポンス

レスポンスは非常にシンプルで

{"ids":["1", "2"], "revisions":["1", "1"]}

とそれぞれ配列で返ってきます。


おわりに

kintone REST API のPOST処理を4種類の方法で試してみました。

前回の 共通事項編GET編と合わせて読むとより良いかもです!

とりあえず、4部構成が全て終わりました!

連載記事一覧

タイトル

0
kintone環境の取得方法 (開発者ライセンス)

1
kintoneの使い方 (データベース編)

2
kintone REST API について (共通事項編)

3
kintone REST API について (GET編)

4

kintone REST API について (POST編) ← 本記事

それでは!≧(+・` ཀ・´)≦