kintoneのREST APIの仕様変更で慌てないために
2015年9月5日
斎藤 栄
2015年12月13日のkintoneの定期メンテナンスにおいて、REST APIの仕様変更が予告されています。
"処理の高速化のため一部のライブラリをグローバルスタンダードなものへ変更します。"
とのことで、従来は許されていた以下のようなJSONの形式でkintoneにリクエストしていると、アップデート後にはエラーになってしまうとのこと。
//末尾に余計な","を含む {"ids":[1,2],} //キー、またはバリューの文字列をシングルクォートで囲む {'ids':[1,2],'size':'1'} //Cスタイルの複数行コメント(/**/)、またはC++スタイルの行コメント(//)を含む {"ids":[1,2]/*comment*/}
上記のような記述をしている場合、以下のような対処が必要となります。
//末尾の余計な","を除去 {"ids":[1,2]} //キー、またはバリューの文字列をダブルクォートで囲む {"ids":[1,2],"size":"1"} //Cスタイルの複数行コメント(/**/)、またはC++スタイルの行コメント(//)を除去 {"ids":[1,2]}
さて、これまで数多くのkintoneカスタマイズをしてきた私ですが、主にJavaScriptのkintone.api() を用いたREST APIリクエストは、様々なお客様向けのカスタマイズで多用してきました。時折サーバーサイド(PHP)からのREST APIリクエストも行ったことがあります。
この仕様変更の予告を読んだ時に真っ先に気になったのが「シングルクォートで囲む」という箇所です。JavaScriptでJSONデータ(オブジェクト)を作る際、シングルクォーテーションを使ってしまうことがたまにあったなあと思い、これまでお客様にご提供したプログラムソースコードを片っ端から調べて直さないとダメなのか。。と途方に暮れていました。
JavaScriptだと以下のようなオブジェクトの書き方になりますね。
var json_data = { 'name': 'myName' // キーもバリューもシングルクォーテーションで囲まれている }
こういう書き方をしている箇所がどれだけあるのかを考えただけでも気が滅入る思いだったのですが、よくよく考えてみると、REST APIリクエストの際はオブジェクトを定義した時の文字列そのものが送られるわけではなく、JSON文字列に置き換えられたものが送信されているはずです。
例えば kintone.api() を使ったREST APIリクエストだと、上記のようなシングルクォーテーションを用いた json_data オブジェクトを引数に渡すと、kintone.api() の中で自動的に正しいJSON文字列に変換した上で送信してくれます。つまり、
{"name":"myName"}
という正しいJSON文字列に変換されているわけです。
また、(推奨されてはいませんが)XMLHttpRequestを用いたREST APIリクエストの場合も、
var json_string = JSON.stringify(json_data);
のように、JSON.stringify()を用い正しいJSON文字列に変換した上で送信しているはずですし、サーバーサイドのPHPからのREST APIリクエストの場合も、
$json_string = json_encode(json_data);
のように、json_encode()を用いて正しい変換を行うのが一般的です。
というわけで、問題が起こるのは上記のような変換関数を使わず、自前でJSON文字列を生成しているようなケースになるわけですが、そのようなことをしていない限りは、今回のREST APIの仕様変更で慌てる必要はないというわけです。
これで、数週間途方に暮れていた私も今夜はぐっすり眠れそうです。
同様の悩みを抱えていた方への参考になれば幸いです。
ラジカルブリッジでは、チームワークを強化するオリジナルkintone業務アプリ構築サービス「ベストチーム365」を提供しています。89,890円の《わくわくプラン》と252,500円の《にこにこプラン》の2プランで、使いやすいオリジナルkintoneアプリを早く・安くご提供します。kintoneを活用した業務効率化やチームワークの強化に関心のある方は、ぜひ当社までお問い合わせください。