REST APIに関しまして

背景・実現したいこと

 REST APIを利用してphpからkintoneへデータを1件登録したいのですが、レコードは作成されても項目が設定されません。

同様の現象を探してみたのですが、確認できない状況となっております、ご参考等がございましたらご教示いただけますと助かります

利用したソースコード

// kintoneのアプリ情報を設定
$subdomain = ‘*******’;
$appid = ‘99’;
$token = ‘xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx’;

$basicLoginName = “basicid”;
$basicPassword = “basicpass”;

$header = array(
'Host: ’ . $subdomain . ‘.cybozu.com:443’,
‘Content-Type: application/json’,
'X-Cybozu-API-Token: ’ . $token,
'Authorization:Basic: ’ . base64_encode($basicLoginName . ‘:’ . $basicPassword)
);

// テストデータ
$post_data[] = array(
‘value’=>array(
“貴社名” => array(
“value” => “(会社名テスト)”
),
“メールアドレス” => array(
“value” => “(yyyy@aaaaa.co.jp)”
),
“お問合せ内容” => array(
“value” => “テストお問い合わせ”
),
“test_feild” => array(
“value” => “(test)”
)
)
);

$json = array(
“app” => $appid,
“records” => $post_data,
);

$json = json_encode($json);

echo $json;

// kintone へ post
$post_context = array(
“http” => array(
“method” => “POST”,
“header” => implode(“\r”, $header),
“content” => $json,
“ignore_errors” => “true”,
)
);

$response = file_get_contents(
‘https://’ . $subdomain. ‘.cybozu.com/k/v1/records.json’,
false,
stream_context_create($post_context)
);
$pos = strpos($http_response_header[0], ‘200’);
if ($pos === false) {
echo “データの登録ができませんでした。お手数ですが再度登録下さい。”;
} else {
echo “データの登録が完了しました。”;
}

レコードは追加されるが、各フィールドが空で登録されてしまうという意味ですかね?

であれば、認証周りは大丈夫そうなので、送信しているJSONの問題ですね。フィールド名が間違っていたり構造がまちがっていたりの可能性があります。

JSONを貼り付けてもらうとなにかわかるかもしれません。

 

早速のご意見ありがとうございます。echoしたJSONは以下のとおりです、よろしくお願いいたします。

※レコードは追加されますが、項目が空で作成されている状況です

{“app”:“83”,“records”:[{“value”:{“\u8cb4\u793e\u540d”:{“value”:“(\u30d6\u30ec\u30a4\u30f3\u30a2\u30f3\u30c9\u30c8\u30e9\u30b9\u30c8)”},“\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9”:{“value”:“(info@bandt.co.jp)”},“\u304a\u554f\u5408\u305b\u5185\u5bb9”:{“value”:“(\u30c6\u30b9\u30c8)”},“test_feild”:{“value”:“(test)”}}}]}

日本語文字列についても気にはなるのですが、英数項目(test_feild)も設定されないので、やはり登録が失敗しているのかと想定しました。

 

https://developer.cybozu.io/hc/ja/articles/202166160-%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E7%99%BB%E9%8C%B2-POST-#step2

一括登録のサンプルのリクエストボディの構造と良くくらべてみてください。
ここと構造がちがうので、空で登録されてしまってますね。

 

村濱一樹

早々にありがとうございます、JSONも成形していただき重ね重ねありがとうございます。

確かに1階層不要でした、修正後実行しましたがやはり、空のレコードが作成されている状況が変わりません。何か環境的に必要または条件があるのでしょうか?

以下、修正後JSONです。

{“app”:“83”,“records”:[{“\u8cb4\u793e\u540d”:{“value”:“(\u30d6\u30ec\u30a4\u30f3\u30a2\u30f3\u30c9\u30c8\u30e9\u30b9\u30c8)”},“\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9”:{“value”:“(info@bandt.co.jp)”},“\u304a\u554f\u5408\u305b\u5185\u5bb9”:{“value”:“(\u30c6\u30b9\u30c8)”},“test_feild”:{“value”:“(test)”}}]}

 

であれば、フィールドコードがやはり間違っている可能性はありますね。

フィールド名とフィールドコードは違うというのはご理解されていますでしょうか?一度見直してみたほうが良いかとおもいます!

https://jp.cybozu.help/k/ja/user/app_settings/form/autocalc/fieldcode.html

村濱一樹

ご丁寧にご回答をありがとうございます、ご提示いただいたフィールドコード内容につきまして確認いたします。
ありがとうございます。

村濱一樹
登録できました!
フィールドコード誤りが原因でした。複数にわたりご回答、アドバイスをありがとうございました。
大変助かりました、ありがとうございました。