【更新情報】
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編) ← 本記事 |
それでは!≧(+・` ཀ・´)≦