概要
簡易的な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
})
}
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.filter(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がオススメです。