Node.jsで簡単なAPIサーバーを作る

フロントエンド開発において、登録や一覧取得をまかなうAPIサーバーの存在は欠かせません。

そこで今日はNode.jsで立ち上げる検証用の簡易なAPIサーバーを作るまでの手順を紹介していこうと思います。

まずは開発したいディレクトリを作成し、移動したのちパッケージ管理の初期コマンドを実行します。

mkdir light-api
cd light-api
yarn init

いくつか対話的な設定がありますが、検証用ですので今回はEnterを連打しておきましょう。

yarn init v1.13.0
warning ../../package.json: No license field
question name (light-api):
question version (1.0.0):
question description:
question entry point (index.js):
question repository url:
question author:
question license (MIT):
question private:
success Saved package.json
✨  Done in 32.41s.

次にWebサーバーを立てることになりますので、軽量Webフレームワークであるexpressをインストールします。

yarn add express

リクエストされたデータをいい感じで受け取るために、body-parserというライブラリも必要なので、こちらも入れておきます。

yarn add body-parser

あとは今回はNeDBと言うものを使ってデータ保存を実現していきます。ローカルにデータベースソフトなどをインストール必要が無いので、今回のようにサクッとデータ保存したいときに便利です。

yarn add nedb

インストールが済んだらアプリケーション用のコードを書いていきます。

touch index.js

エントリーポイントとなるindex.jsを作成し、基本的な処理を書いていきます。

const express = require("express");
const app = express();

const NeDB = require("nedb");
const db = {
    tasks: new NeDB({
        filename: "data/tasks",
        autoload: true
    })
};

const bodyParser = require("body-parser");
app.use(bodyParser.json());

// 一覧取得
app.get("/tasks", (req, res) => {
    db.tasks.find({}, (err, docs) => {
        res.send(docs);
    });
});

// 新規作成
app.post("/tasks", (req, res) => {
    db.tasks.insert({ name: req.params.name }, (err, newDoc) => {
        res.send(newDoc);
    });
});

// 内容更新
app.put("/tasks/:id", (req, res) => {
    db.tasks.update(
        { _id: req.params.id },
        { $set: { name: req.body.name } },
        { upsert: false, returnUpdatedDocs: true },
        (err, numOfDocs, updatedDocs) => {
            res.send(updatedDocs);
        }
    );
});

// 削除
app.delete("/tasks/:id", (req, res) => {
    db.tasks.remove({ _id: req.params.id }, {}, (err, numOfDocs) => {
        res.send();
    });
});

app.listen(3000, () => console.log("listening at port 3000"));

これといって特筆するところはありませんが、NeDBを利用することでシンプルにWebAPIにおける基本動作を実装できています。

サンプルではタスク管理アプリのAPIをイメージして作成していますが、フロントエンド側の実装に応じて変更しながら使ってみてください。

あとは、

node index.js

と実行すれば、localhost:3000でアクセスできるAPIが出来上がります。


この記事が気に入ったらサポートをしてみませんか?