Router.route()

 router.route()

IT RETURNS AN INSTANCE OF A SINGLE ROUTE WHICH YOU CAN THEN USE TO HANDLE HTTP VERBS WITH OPTIONAL MIDDLEWARE.

IT'S A FUNCTIONALITY BY WHICH WE CAN COMBINE THE VERBS OF A COMMON PATH.

WE RE-FORMAT PATHS .

IN ROUTES

LISTING.JS

const express = require("express");
const router = express.Router();
const wrapAsync = require("../utils/wrapAsync.js");
const ExpressError = require("../utils/ExpressError.js");
const { listingSchema } = require("../schema.js");
const Listing = require("../models/listing.js");
const { isLoggedIn, isOwner, ValidateListing } = require("../middleware.js");
const listingController = require("../controller/listing.js");

router
  .route("/")
  .get(wrapAsync(listingController.index))
  .post(
    isLoggedIn,
    ValidateListing,
    wrapAsync(listingController.postNewListing)
  );

// NEW ROUTE
router.get("/new", isLoggedIn, listingController.getNewListing);

router
  .route("/:id")

  // SHOW ROUTE
  .get(wrapAsync(listingController.showListing))
  // UPDATE ROUTE
  .put(
    isLoggedIn,
    isOwner,
    ValidateListing,
    wrapAsync(listingController.updateListing)
  )

  // DELETE ROUTE
  .delete(isLoggedIn, isOwner, wrapAsync(listingController.deleteListing));

// EDIT ROUTE
router.get(
  "/:id/edit",
  isLoggedIn,
  isOwner,
  wrapAsync(listingController.editListing)
);

module.exports = router;

USER.JS

const express = require("express");
const router = express.Router();
const wrapAsync = require("../utils/wrapAsync.js");
const User = require("../models/user.js");
const passport = require("passport");
const { func } = require("joi");
const { saveRedirectedUrl } = require("../middleware.js");
const userController = require("../controller/user.js");

router
  .route("/signup")
  .get(userController.renderSignup)
  .post(wrapAsync(userController.signup));

router
  .route("/login")
  .get(userController.loginForm)
  .post(
    saveRedirectedUrl,
    passport.authenticate("local", {
      failureRedirect: "/login",
      failureFlash: true,
    }),
    userController.login
  );
 
router.get("/logout", userController.logout);
module.exports = router;

Comments