概要
サービスの規模が大きくなったりコードを役割べつに分割したりなどで役立つrouterを導入してみます。
routerは
ルーターは、ウェブアプリケーションの異なるエンドポイント(URL)へのリクエストを取り扱うためのモジュールです。ルーターを使用することで、アプリケーションのルートをモジュール化し、保守しやすくするのが可能です。
導入
ファイル化します。
express.Router()を用いてrouterモジュールを作成します。そして別のファイルにします。すうすることでより保守しやすくできます。
// router.ts
export const router = express.Router();
router.get('/users', (req, res) => {});
router.post('/users', (req, res) => {});
router.put('/users', (req, res) => {});
使用します。
// index.ts
import { router } from './router';
...
app.use('/users',router);
...
全体
// index.ts
import express from 'express';
import dotenv from 'dotenv';
import { router } from './router';
dotenv.config();
const app = express();
const port = process.env.PORT || 3000;
// ミドルウェア設定
app.use(express.json());
app.use('/users',router);
app.listen(port, () => {
console.log(`Server is running on port: ${port}`);
});
// router.ts
import express from 'express';
// 固定のユーザー情報
const users = [
{ id: 0, name: 'J.Taro', age: 35 },
{ id: 1, name: 'S.Hanako', age: 53 },
{ id: 2, name: 'K.Jiro', age: 47 }
];
export const router = express.Router();
// ルーティング
router.get('', (req, res) => {
res.json(users);
});
router.post('', (req, res) => {
const newUser = { id: users.length + 1, ...req.body };
users.push(newUser);
res.status(201).json(newUser);
});
router.put('/:id', (req, res) => {
const { id } = req.params;
const index = users.findIndex(user => user.id === parseInt(id));
if (index === -1) {
return res.status(404).json({ message: 'User not found' });
}
users[index] = { ...users[index], ...req.body };
res.json(users[index]);
});