KiiCloudのRest APIをnode.jsで取得する方法


KiiCloudではRestAPIの取得方法をcurlコマンドで紹介しています。
[Kiicloud Rest APIの取得方法](http://documentation.kii.com/ja/guides/rest/)
これらをcurlコマンドではなく、node.jsで取得したいと思い、サポートの方に質問してみたところ、本当に手厚い対応をしていただき、感謝のつもりで、Qiitaに投稿します。ほとんどコードはサポートの人が教えてくれました。
[コミニティでの回答](http://community-jp.kii.com/t/restapi/465/4)
大げさのことではなく、基本的にHTTP通信が可能な環境であれば、RestAPIを実行することは可能だそうです。参考になれば幸いです。

##ユーザーの作成　[公式ドキュメント](http://documentation.kii.com/ja/guides/rest/managing-users/sign-up/)

```curl:curl
curl -v -X POST \
  -H "X-Kii-AppID: {APP_ID}" \
  -H "X-Kii-AppKey: {APP_KEY}" \
  -H "Content-Type: application/vnd.kii.RegistrationRequest+json" \
  "https://api-jp.kii.com/api/apps/{APP_ID}/users" \
  -d '{"loginName": "user_123456", "displayName": "person test000", "country": "JP", "password": "123ABC"}'
```

```js:node.js

var username = "user";
var request_body = {
  "loginName":username,
  "displayName":username,
  "country":"JP",
  "password":"password"
};
var json = JSON.stringify(request_body);
var options = {
  hostname: "api-jp.kii.com",
  port: 443,
  path: "/api/apps/[YourAppID]/users",
  method: "POST",
  agent: false,
  headers: {
    "content-length":json.length,
    "content-type":"application/vnd.kii.RegistrationRequest+json",
    "x-kii-appid":"[YourAppID]",
    "x-kii-appkey":"[YourAppKey]"
  }
};
var https = require("https");
var req = https.request(options, function(res) {
  res.on('data', function() {
  });
  res.on('end', function() {
    if (res.statusCode != 201) {
      console.log("failure:" + res.statusCode);
    } else {
      console.log("success");
    }
  });
  res.on('error', function(err) {
    console.log("failure:" + err);
  });
});
req.on('error', function(err) {
  console.log("failure:" + err);
});
req.write(json);
req.end();
```

##ログイン　[公式ドキュメント](http://documentation.kii.com/ja/guides/rest/managing-users/sign-in/)

```curl:curl
curl -v -X POST \
  -H "X-Kii-AppID: {APP_ID}" \
  -H "X-Kii-AppKey: {APP_KEY}" \
  -H "Content-Type: application/json" \
  "https://api-jp.kii.com/api/oauth2/token" \
  -d '{"username": "user_123456", "password": "123ABC"}'
```

```js:node.js
var username = "name";
var password = "password";
var country = "JP";
var AppID = "任意";
var AppKey = "任意";

var request_body = {
	"username":username,
	"password":password
};
var json = JSON.stringify(request_body);
var options = {
	hostname: "api-jp.kii.com",
	port: 443,
	path: "/api/oauth2/token",
	method: "POST",
	agent: false,
	headers: { "content-length":json.length,
				"content-type":"application/json",
				"x-kii-appid":AppID,
				"x-kii-appkey":AppKey,
				}
			};
			
var https = require("https");
var req = https.request(options, function(res) {
	var body = '';
	res.on('data', function(chunk) {
		body += chunk;
	});
	res.on('end', function() {
			console.log("ログインデータ");
			console.log(body);
	});
	res.on('error', function(err) {
		console.log("error");
		console.log("failure:" + err);
	});
});
req.write(json); 
req.end();
/*
取得データ
"id" : "任意",
"access_token" : "任意",
"expires_in" : 2147483639,
"token_type" : "Bearer"
*/
```

##オブジェクトの取得　[公式ドキュメント](http://documentation.kii.com/ja/guides/rest/managing-data/object-storages/retrieving/)

```curl:curl
curl -v -X GET \
  -H "Authorization: Bearer {ACCESS_TOKEN}" \
  -H "X-Kii-AppID: {APP_ID}" \
  -H "X-Kii-AppKey: {APP_KEY}" \
  "https://api-jp.kii.com/api/apps/{APP_ID}/users/me/buckets/{BUCKET_ID}/objects/{OBJECT_ID}"
```

```js:node.js
//例ではアプリケーションスコープのデータ取得
//スコープについては下記 
//http://documentation.kii.com/ja/starts/cloudsdk/cloudoverview/idanduri/

var username = "name";
var password = "password";
var country = "JP";
var AppID = "任意";
var AppKey = "任意";
var accessToken = "上記のログインで取得";
var bakectName = "任意";
var objID = "決め打ち or 検索して取得";

var Authorization = "Bearer " + accessToken;

	var options = {
	hostname: "api-jp.kii.com",
	port: 443,
	path: "/api/apps/"+ AppID +"/buckets/"+ bakectName +"/objects/"+ objID,
	method: "GET",
	agent: false,
	headers: { 
				"content-type":"application/json",
				"x-kii-appid":AppID,
				"x-kii-appkey":AppKey,
				"Authorization": Authorization
				}
			};
			
	var https = require("https");
	var req = https.request(options, function(res) {
		var body = '';
		res.on('data', function(chunk) {
			body += chunk;
		});
		res.on('end', function() {
				console.log(body);
				var data = JSON.parse(body);
                                //dataをごにょごにょ
		});
		res.on('error', function(err) {
			console.log("error");
			console.log("failure:" + err);
		});
	});
	req.end();
/*
取得データ
オブジェクトデータ
*/
```

以上でございます。KiiCloud万歳。