Node.js つかってみる
2022-5-31 10:00 JST
jQuery も使えないまま Node.js をつかってみる。JavaScript とかめったに使わない。
そういえば、昔(1995くらいに) Document.write() とかで HTML を直に出力するのを一生懸命書いたな。
まずはインストール
Ubuntuに最新のNode.jsを難なくインストールするを読みながら Node.js のインストール。
$ sudo apt install nodejs npm
$ sudo npm install n -g
$ sudo n stable
$ sudo apt purge -y nodejs npm
$ node -v
v16.14.0
$ sudo n 9.11.2
$ node -v
v.9.11.2
node-rest-client
node-rest-clientをインストールし、github にある、サンプルをそのままやってみる。
SimpleHTTPGET
var Client = require('node-rest-client').Client;
var client = new Client();
// direct way
client.get("http://remote.site/rest/xml/method", function (data, response) {
// parsed response body as js object
console.log(data);
// raw response
console.log(response);
});
// registering remote methods
client.registerMethod("jsonMethod", "http://remote.site/rest/json/method", "GET");
client.methods.jsonMethod(function (data, response) {
// parsed response body as js object
console.log(data);
// raw response
console.log(response);
});
Bing Maps APIs
Bing Maps APIsでまずは ID つくって、Key をもらう。
Node.js で試す
node.js
var Client = require('node-rest-client').Client;
var client = new Client();
var latitude = 35.6;
var longitude = 140.1;
var key = "自分のキー";
var r = 2.0;
var output_format = "json";
var lang = "ja-Jp"
var search_type = "Train%20Stations";
var url = `https://dev.virtualearth.net/REST/v1/LocationRecog/${latitude},${long
itude}?key=${key}&r=${r}&output=${output_format}&type=${search_type}&c=${lang}`;
client.registerMethod("jsonMethod", url, "GET");
client.methods.jsonMethod(function (data, response) {
// parsed response body as js object
console.log(data['resourceSets'][0]['resources'][0]['businessesAtLocation']);
// raw response
//console.log(response);
});
console.log(url)
node.js 実行。うまくいくと情報が得られる。c=に ja-Jp とか入れても無視される模様。あと、千葉駅の情報が重複(日本語、英語、フランス語?)してたりしていまひとつだ(2022/5)。使い方が悪い可能性もあるが、本家のドキュメントに明確な記載がない。
$ node node.js
情報は JSON
情報は JSON なので上のように、配列かあるいは連想記憶でアクセスできる。配列なら数字で、連想記憶ならそのキーになる文字列でアクセス。どういう構造の JSON かは(JSON ってスキマあるんか?)本家の API に書いてるようなないような。
ついでだからアクセス用の関数を作る。JavaScript ぽく書いてない(かけない)。末尾再帰をちゃんと理解してくれるのだろうか?
get_item
function get_item(json, addr) {
if (addr.length == 0) {
return json
}
const key_or_num = addr[0];
return get_item(json[key_or_num], addr.slice(1));
}
リンク集
この記事を読むとすごく楽に Node.js をインストールできた。 バージョン管理もできるらしい。
node-rest-client の本家の github
Bing Maps APIs のページ。まずはここで ID つくる。
LocationRecog の正式なドキュメント