APIアプリ(JavaScript)を動かす

JavaScriptで作ったAPIアプリを、Node.jsで動かします。
Node.jsは「JavaScriptをサーバーサイドで動かすための実行環境」です。

node.js のインストール

まだインストールしていない場合は下記手順でインストールします。

■インターネット接続を検査する。
$ ping google.com

■node.js をインストールする。

# nvmをダウンロードしてインストールする:
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash

# シェルを再起動する代わりに実行する
$ source "$HOME/.nvm/nvm.sh"
または
$ . "$HOME/.nvm/nvm.sh"

# Node.jsをダウンロードしてインストールする:
$ nvm install 24

■インストールできたことを検査する
$ node -v 
# "v24.8.0"が表示される

$ npm -v  
# " 11.6.0"が表示される

$ nvm -v  
# "v0.40.3"が表示される

「おみくじアプリ」を動かしてみる

[app]ディレクトリを作って、新しいファイル[test.js]を作って、下記コードを記述する

const fortunes = [
  "大吉",
  "中吉",
  "小吉",
  "吉",
  "末吉",
  "凶",
  "大凶"
];

const spinnerFrames = ['/', '|', '\\', '-'];
let frameIndex = 0;

process.stdout.write("占い中… ");

const spinnerInterval = setInterval(() => {
  process.stdout.write('\r占い中… ' + spinnerFrames[frameIndex]);
  frameIndex = (frameIndex + 1) % spinnerFrames.length;
}, 100); // 100msごとに更新(1秒で10回転)

setTimeout(() => {
  clearInterval(spinnerInterval);
  const result = fortunes[Math.floor(Math.random() * fortunes.length)];
  console.log('\rあなたの今日の運勢は…');
  console.log("🔮", result);
}, 3000); // 3秒後に結果表示

アプリを実行する。今日の運勢が表示されたら成功。

$ node test.js

REST-APIアプリを作る

Node.jsで動く「おみくじアプリ」をHTTP API化して、ポート3000でJSONレスポンスを返すように改造する。
WEBアプリのフレームワーク「Express」をインストールします。

$ npm install express

[app]ディレクトリに新しいファイル[test-api.js]を作って、下記コードを記述する

const express = require('express');
const app = express();
const PORT = 3000;

const fortunes = [
  "大吉",
  "中吉",
  "小吉",
  "吉",
  "末吉",
  "凶",
  "大凶"
];

app.get('/omikuji', (req, res) => {
  const result = fortunes[Math.floor(Math.random() * fortunes.length)];
  res.json({
    message: "あなたの今日の運勢は…",
    result: result
  });
});

app.listen(PORT, () => {
  console.log(`Omikuji API is running on http://localhost:${PORT}/omikuji`);
});

APIアプリは実行すると、ポート3000で待ち受けします

$ node test-api.js 
Omikuji API is running on http://localhost:3000/omikuji

サーバーローカル(成功したらブラウザ)から、APIアプリにアクセスします。

$ curl http://localhost:3000/omikuji
{"message":"あなたの今日の運勢は…","result":"吉"}

コメントを残す