postman 找不到express.js 代码中的路径

问题描述 投票:0回答:1

我想知道为什么会出现这个错误,我可以成功注册并登录用户,甚至控制权转到customer/auth中的下一个,但下一个之后,邮递员显示这个,请帮助](https://i.sstatic.net/khURopb8 .png

这是index.js

const express = require('express');
const jwt = require('jsonwebtoken');
const session = require('express-session')
const customer_routes = require('./router/auth_users.js').authenticated;
const genl_routes = require('./router/general.js').general;

const app = express();

app.use(express.json());

app.use("/customer",session({secret:"fingerprint_customer",resave: true, saveUninitialized: true})) 

app.use("/customer/auth/*", function auth(req,res,next){
// middleware for authentication, firstly check for authentication and then pass control for next task...
    if(req.session.authorization) {
        let token = req.session.authorization['accessToken']; // Access Token
        jwt.verify(token, "access",(err,user)=>{
            if(!err){
                req.user = user;
                next();
            }
            else{
                return res.status(403).json({message: "User not authenticated"})
            }
        });
    } else {
        return res.status(403).json({message: "User not logged in"})
    }
});

`常量端口=5000;

app.use("/customer", customer_routes); app.use("/", genl_routes);

app.listen(PORT,()=>console.log("服务器正在运行")); `

这是 auth_users.js

const express = require('express');
const jwt = require('jsonwebtoken');
let books = require("./booksdb.js");
const regd_users = express.Router();

let users = [];
//Check, is the username valid
const isValid = (username)=>{ //returns boolean
let userswithsamename = users.filter((user)=>{
    return user.username === username
  });
  if(userswithsamename.length > 0){
    return true;
  } else {
    return false;
  }
}

//Check if username and password match the one we have in records.
const authenticatedUser = (username,password)=>{ //returns boolean
    let validusers = users.filter((user)=>{
        return (user.username === username && user.password === password)
    });
    if(validusers.length > 0){
        return true;
    } else {
        return false;
    }
}

//only registered users can login
regd_users.post("/login", (req,res) => {
    const username = req.body.username;
    const password = req.body.password;
    if (!username || !password) {
        return res.status(404).json({message: "Error logging in"});
    }
    if (authenticatedUser(username,password)) {
      let accessToken = jwt.sign({
        data: password
      }, 'access', { expiresIn: 60 * 60 });
      req.session.authorization = {
        accessToken,username
    }
    return res.status(200).send("User successfully logged in");
    } else {
      return res.status(208).json({message: "Invalid Login. Check username and password"});
    }
});

// Add a book review
regd_users.put("/auth/review/:isbn", (req, res) => {
    console.log("hiiii");
    const isbn = req.params.isbn;
    const { review } = req.body;
    const username = req.session.username;
  
    if (!username) {
      res.status(401).json({ error: "User not logged in." });
      return;
    }
  
    if (!review) {
      res.status(400).json({ error: "Review is required." });
      return;
    }
  
    if (!books[isbn]) {
      res.status(404).json({ error: "Book not found." });
      return;
    }
  
    const reviewObject = {
      username: username,
      review: review
    };
  
    if (!books[isbn].reviews[username]) {
      // If the user hasn't posted a review for this book before, create a new review entry
      books[isbn].reviews[username] = reviewObject;
      res.status(201).json({ message: "Review posted successfully." });
    } else {
      // If the user has already posted a review for this book, update their existing review
      books[isbn].reviews[username] = reviewObject;
      res.status(200).json({ message: "Review updated successfully." });
    }
});
module.exports.authenticated = regd_users;
module.exports.isValid = isValid;
module.exports.users = users;

我尝试更改客户/授权/评论的路径? (没有斜杠),也没有客户,并尽了我所能,但结果总是相同的。请帮忙。`

javascript node.js express object
1个回答
0
投票

路线不存在

您使用的语法

app.use("/customer/auth/*", callback)
未定义任何路线。

正确的语法应该是:

app.use("route-prefix", routerMiddleware)
使用 routerMiddleware 是您定义路由的地方

您可以按照以下语法为每个路由单独使用语法:

app.put("/something", callback)
或者
app.route("/something").put(callback)

查看更多信息:https://expressjs.com/en/guide/routing.html

© www.soinside.com 2019 - 2024. All rights reserved.