REST-APIを作ってみる(Node.js + Express編)

2022/10/24

(最終更新: 2022/10/24

アイキャッチ画像

はじめに

REST-APIを作ってみるシリーズ第一弾。Node.jsとPythonとSpringBootを基礎だけ勉強したい。

ということで、基本的なAPIをNode.jsで作ってみます。

環境

過去に、似たようなことを記事に残していました。 本記事では手順の未記載し、詳細な説明は過去記事を参照とします。

Node.js+ExpressでWebAPIサーバを作ってみた

Node.js+ExpressでWebAPIサーバを作ってみた

Node.jsとExpressモジュールを使ってWEB-APIサーバを作成してみます。JSONでデータを返却します。

https://bunsugi.com/rest-api-node-express

プロジェクト作成

GitHubでプロジェクトを作成する。「restful-api-node」とした。 .gitignoreを「Node」設定で生成しておく。

$ git clone git@github.com:{githubユーザ名}/restful-api-node.git
$ cd restful-api-node
$ git init
$ npm init -y

expressをインストール

$ npm install express 
$ npm install eslint --save-dev 
$ npm init @eslint/config
✔ How would you like to use ESLint? · problems
✔ What type of modules does your project use? · commonjs
✔ Which framework does your project use? · none
✔ Does your project use TypeScript? · No / Yes ※Noを選択
✔ Where does your code run? · browser
✔ What format do you want your config file to be in? · JavaScript
Successfully created .eslintrc.js file in /home/bunta/workspace/api-node/restful-api-node

Node.jsでは基本的にCommonJS形式でインポートする。

ソースコードを作成する

①ExpressでHTTPサーバを作り、APIを用意する

$ touch index.js

ポート3000で待ち受けるHTTPサーバを構築。 GETメソッドで呼び出されると、ステータスコード200で"Hello World"を返却するAPIを準備する。

index.js
const express = require('express')
const app = express()
const port = 3000;

app.get('/', (req, res) => {  res.status(200).send("Hello World")});
app.listen(port, () => console.log(`Example app listening on port ${port}!`));

動作確認をする

コンソールで以下を入力すると、Nodeプログラムが実行される。

$ node index.js
Example app listening on port 3000!

WebブラウザやHTTPリクエストツールでAPIを叩いてみる。 応答が返却されたことを確認する。

Hello World

HTTPリクエストツールはPOSTMANを利用。

インストール記事:
https://tomiko0404.hatenablog.com/entry/2021/10/17/Postman-GET-POST

②パスパラメータに応じてJSONデータを返却するAPI

APIを少し実践に近づける。

メンバーのリストを照会できるAPIとする。

  • パスパラメータ無しでアクセスされた場合、全メンバーの情報をリスト返却する。
  • パスパラメータにメンバーIDを入れた場合、該当するメンバーIDの情報を返却する。
index.js
const express = require('express')
const app = express()
const port = 3000;

// 簡易的にデータを定義
const members = [{
  id: "1",
  name: "Taro",
  team: "A"
}, {
  id: "2",
  name: "Jiro",
  team: "B"
}, {
  id: "3",
  name: "Saburo",
  team: "A"
}]

// パスパラメータを設定しない場合は全メンバーの情報取得 localhost:3000
app.get('/', (req, res) => {
    res.status(200).send(members)
});

// パスパラメータを設定する場合 例)localhost:3000/1
app.get('/:id', (req, res) => {
  const id = req.params.id;
  const member = members.filter((member) => member.id === id)
  res.status(200).send(member)
});


app.listen(port, () => console.log(`Example app listening on port ${port}!`));

同様に、動作を確認する。

パスパラメータなし パスパラメータなし

パスパラメータあり パスパラメータあり

おわりに

Node.js+Expressで簡単にAPIを作成することができた。

関連記事



個別連絡はこちらへ→Twitterお問い合わせ

プロフィール

プロフィールイメージ

はち子

事業会社のシステム部門に異動して4年目の会社員。システム企画/要件定義/システムアーキテクチャ等。

Twitter→@bun_sugi

過去の記事について

はてなブログに掲載の記事(主にプログラミングメモ)についてはこちらに掲載しております。(本ブログに移行中)

タグ一覧

関連記事

Copyright© 2022, エンジニアを目指す日常ブログ

お問い合わせ|プライバシーポリシー