Expressで簡易的にAPIを作成する

Expressで簡易的にAPIを作成する:


概要

簡易的な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がオススメです。

回りくどい方法じゃなく、NedblowdbなどのJSON型のデータベースを使えばよかった。

コメント

このブログの人気の投稿

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2020-12-01 09:41:49 RSSフィード2020-12-01 09:00 分まとめ(69件)