「入門Node.jsプログラミング 」の感想・備忘録10

スポンサーリンク
「入門Node.jsプログラミング 」の感想・備忘録9の続き

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/

コメント