# PHPからのRESTAPI登録

**URL:** <https://community.cybozu.dev/t/topic/2351>\
**Category:** kintone 開発相談\
**Created:** [2016 年 1 月 5 日午後 4:46 UTC](https://community.cybozu.dev/t/topic/2351 "2016-01-05T16:46:50Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Legacy\_Account52](https://avatars.discourse-cdn.com/v4/letter/l/c6cbf5/32.png) [@Legacy\_Account52](https://community.cybozu.dev/u/Legacy_Account52)\
**Post date:** [2016 年 1 月 5 日午後 4:46 UTC](https://community.cybozu.dev/t/topic/2351/1 "2016-01-05T16:46:50Z")

</div>

お世話になります。

先日devCampに参加し、RESTAPIの基礎を学びました。

早速、PHPから登録するコードを作成したのですが、うまく動きません。

間違っている箇所をご指摘いただけると幸いです。

firefox開発ツールのconsoleで試したものが下記でうまく登録できました。

&nbsp;var body={  
&nbsp;&nbsp;&nbsp; “app”:“63”,  
&nbsp;&nbsp;&nbsp; “record”:{  
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; “整理番号”:{“value”:1001},  
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; “RecTime2”:{“value”:“6:00:00”}  
&nbsp;&nbsp;&nbsp; }  
};

kintone.api(  
&nbsp;&nbsp; &nbsp;kintone.api.url(“/k/v1/record”,true),  
&nbsp;&nbsp; &nbsp;“POST”,  
&nbsp;&nbsp; &nbsp;body,  
&nbsp;&nbsp; &nbsp;function(resp){  
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;console.log(JSON.stringify(resp));  
&nbsp;&nbsp; &nbsp;},function(e){  
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;console.log(“error:”+e.message);  
&nbsp;&nbsp; &nbsp;}  
);

同じ事をPHPで作成したものが下記ですが、エラー(failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request)が出ます。

※コードはCstap落合さんが2014/7/22に投稿された、「REST APIの認証設定について」を流用しました。なお、落合さんが作成されたコードではエラーは出ません。

// リクエストヘッダ  
$header = array(  
&nbsp;&nbsp;&nbsp; "Host: " . $subDomain . “.cybozu.com:443”,  
&nbsp;&nbsp;&nbsp; “Content-Type: application/json”,  
&nbsp;&nbsp;&nbsp; “X-Cybozu-API-Token: “. $API\_TOKEN  
);  
&nbsp;  
// アプリID  
$appId = 99;  
&nbsp;  
// HTTPコンテキスト  
$context = array(  
&nbsp; “http” =\> array(  
&nbsp;&nbsp;&nbsp; “method” =\> ‘PUT’,  
&nbsp;&nbsp;&nbsp; “header” =\> implode(”\r”, $header),  
&nbsp;&nbsp;&nbsp; “content” =\> json\_encode(  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; array(  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; “app” =\> $appId,  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; “record” =\> array(  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; “整理番号” =\> array(“value” =\> 1001),  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; “RecTime2” =\> array(“value” =\> “6:00:00”)  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )  
&nbsp;&nbsp;&nbsp; )  
&nbsp; )  
);  
&nbsp;  
$result = file\_get\_contents(  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; “https://” . $subDomain . “.cybozu.com/k/v1/record.json”, // URI  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; false, // use\_include\_pathは必要ないのでfalse  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stream\_context\_create($context) // コンテキストの生成  
);

&nbsp;

よろしくお願いいたします。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1574](https://avatars.discourse-cdn.com/v4/letter/l/76d3ee/32.png) [@Legacy\_Account1574](https://community.cybozu.dev/u/Legacy_Account1574)\
**Post date:** [2016 年 1 月 5 日午後 5:06 UTC](https://community.cybozu.dev/t/topic/2351/2 "2016-01-05T17:06:24Z")

</div>

山下真史さん

&nbsp;

consoleで試されているのは、POST/recordですが、PHPはPUT/recordになっています。後者は、更新処理ですし、レコードIDの指定が必要です。もしくは、後者をPOSTにすれば通ると思います。

&nbsp;

ちなみに、釈迦に説法かもしれませんが、file\_get\_contentsはエラーが拾いにくそうですし、実践では[落合さんが作られたライブラリ](https://github.com/ochi51/cybozu-http)や生のcURL、落合さんが使われているようなPHPのライブラリ類を利用しておいた方がいいのかなぁと思いました。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account52](https://avatars.discourse-cdn.com/v4/letter/l/c6cbf5/32.png) [@Legacy\_Account52](https://community.cybozu.dev/u/Legacy_Account52)\
**Post date:** [2016 年 1 月 5 日午後 10:35 UTC](https://community.cybozu.dev/t/topic/2351/3 "2016-01-05T22:35:14Z")

</div>

Ryu Yamashitaさん

&nbsp;

早速のコメントありがとうございました。

POSTとPUT・・気がつきませんでした。修正したところ難なく登録できました。

（これで3日間ほど悩んでいたのですが・・・）

また、ライブラリの利用のアドバイスをいただきありがとうございます。そうですね、ライブラリを活用するようにいたします。釈迦に説法どころか、天の声になりました。

&nbsp;

引き続き、よろしくお願いいたします。ありがとうございました。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1574](https://avatars.discourse-cdn.com/v4/letter/l/76d3ee/32.png) [@Legacy\_Account1574](https://community.cybozu.dev/u/Legacy_Account1574)\
**Post date:** [2016 年 1 月 6 日午前 12:02 UTC](https://community.cybozu.dev/t/topic/2351/4 "2016-01-06T00:02:35Z")

</div>

解決されたようで良かったです。

&nbsp;
