Expressで簡易的にAPIを作成する
Expressで簡易的にAPIを作成する:
簡易的なAPIを作りたいなって人向けです。
もっと簡単にAPIを作成したいなって方は、json-serverがオススメです。
回りくどい方法じゃなく、NedbやlowdbなどのJSON型のデータベースを使えばよかった。
概要
簡易的なAPIを作りたいなって人向けです。
使うモジュールをインストールする
yarn add express body-parser faker
テストデータの作成
createUser.js
const faker = require("faker/locale/ja"); const fs = require("fs"); const users = []; const maxLength = 100, max = 85, min = 16; for (let i = 0; i < maxLength; i++) { const name = faker.name.lastName() + ' ' + faker.name.firstName(); users.push({ id: i + 1, name: name, age: Math.floor(Math.random() * (max + 1 - min) ) + min }) if (i === maxLength - 1 ) { fs.writeFile('users.json', JSON.stringify(users), () => { console.log("users.jsonを作成しました"); }); } }
土台を作る
server.js
const express = require("express"); const app = express(); const fs = require("fs"); const bodyParser = require("body-parser"); const users = require("./users.json"); const port = 3000; app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json()); app.listen(port, () => { console.log("server is running"); })
一覧の取得
app.get('/users/', (req, res) => { res.json(users); });
1つだけ取得
app.get('/users/:id', (req, res) => { const id = req.params.id; const user = users.map(user => { return user.id != id; }); res.json(user); }):
保存する
app.post('/users/', (req, res) => { const userID = users.map(user => { return user.id; }); users.push({ id: Math.max(...userID) + 1, name: req.body.name, age: req.body.age }); fs.writeFile('users.json', JSON.stringify(users), () => { res.json(users); }); });
更新する
app.put('/users/:id', (req, res) => { const id = req.params.id, name = req.body.name, age = req.body.age; // 更新しないデータ const newData = users.filter(user => { return user.id != id; }); // 更新するデータ const alterUser = users.filter(user => { return user.id == id; }) alterUser[0].name = name; alterUser[0].age = age; newData.push(alterUser[0]); fs.writeFile('users.json', JSON.stringify(newData), () => { res.json(newData); }); });
削除する
app.delete('/users/:id', (req, res) => { const id = req.params.id; const newData = users.filter(user => { return user.id != id; }); fs.writeFile('users.json', JSON.stringify(newData), () => { res.json(newData); }); })
package.jsonの作成
npm init -y
npm-scriptsを編集する
package.json
: "scripts": { "start": "node createUser.js && node server.js" } :
まとめ・反省点
もっと簡単にAPIを作成したいなって方は、json-serverがオススメです。回りくどい方法じゃなく、NedbやlowdbなどのJSON型のデータベースを使えばよかった。
コメント
コメントを投稿