Lesson26
経路を再編成する
- 経路が増えるとindex.jsが膨大になってしまうため、経路を複数のファイルに分割して定義するとよい。
const router = require("./routes/index");
// ミドルウェア関数群の後に
app.use("/", router);
"use strict";
const router = require("express").Router(),
userRoutes = require("./userRoutes"),
errorRoutes = require("./errorRoutes"),
homeRoutes = require("./homeRoutes");
// 順序が重要。経路が詳細なものを先に記述する
router.use("/users", userRoutes);
router.use("/", homeRoutes);
router.use("/", errorRoutes);
module.exports = router;
"use strict";
const router = require("express").Router(),
errorController = require("../controllers/errorController");
router.use(errorController.logErrors);
router.use(errorController.respondNoResourceFound);
router.use(errorController.respondInternalError);
module.exports = router;
"use strict";
const router = require("express").Router(),
homeController = require("../controllers/homeController");
router.get("/", homeController.index);
router.get("/contact", homeController.contact);
module.exports = router;
"use strict";
const router = require("express").Router(),
usersController = require("../controllers/usersController");
router.get("/", usersController.index, usersController.indexView);
router.get("/new", usersController.new);
router.post(
"/create",
usersController.validate,
usersController.create,
usersController.redirectView
);
router.get("/login", usersController.login);
router.post("/login", usersController.authenticate);
router.get("/logout", usersController.logout, usersController.redirectView);
router.get("/:id/edit", usersController.edit);
router.put("/:id/update", usersController.update, usersController.redirectView);
router.get("/:id", usersController.show, usersController.showView);
router.delete("/:id/delete", usersController.delete, usersController.redirectView);
module.exports = router;
APIを作る
respondJsons: (req, res) => {
res.json(res.locals.users);
},
router.get("/json", usersController.index, usersController.respondJsons);
API用にルート定義ファイルを追加する場合
const apiRoutes = require("./apiRoutes");
router.use("/api", apiRoutes);
"use strict";
const router = require("express").Router(),
usersController = require("../controllers/usersController");
router.get("/users", usersController.index, usersController.respondJsons);
module.exports = router;
※Fetch APIを使ってFormDataをPOSTする場合、express-form-dataパッケージが必要なので注意。
https://makandat.wordpress.com/2021/08/24/