You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js+MongoDB中出现Cannot GET /api/auth/logowanie错误求助

问题:调用/api/auth/logowanie时返回"Cannot GET /api/auth/logowanie"

在Node.js + MongoDB开发过程中,调用登录接口获取数据时收到错误提示:Cannot GET /api/auth/logowanie。已确认端口与URL完全正确,但问题始终未解决。

相关代码

auth.js(路由文件)

const router = require('express').Router();
const CryptoJs = require('crypto-js');
const User = require('../models/user');
// 注册
router.post('/rejestracja', async (req, res)=>{
    const newUser = new User({
        username: req.body.username,
        email: req.body.email,
        password: CryptoJs.AES.encrypt(req.body.password, process.env.PASS_SEC).toString(),
    });
    try{
        const saveduser = await newUser.save();
        res.status(201).json(saveduser);
    }catch(err){
        res.status(500).json(err);
    }
});

// 登录
router.post('/logowanie', async (req, res) => {
    try{
        const user = await User.findOne({username: req.body.username});
        !user && res.status(401).json("用户名或密码错误")
        const hashedpassword = CryptoJs.AES.decrypt(user.password, process.env.PASS_SEC);
        const password = hashedpassword.toString(CryptoJs.enc.Utf8);
        password !== req.body.password &&
            res.status(401).json("用户名或密码错误")
        res.status(200).json(user);
    }catch(err){ res.status(500).json(err); }
})
module.exports = router

index.js(入口文件)

const express = require('express');
const app = express();
const dotenv = require('dotenv');
dotenv.config();
const userRoute = require("./routes/user");
const authRoute = require("./routes/auth");

const mongoose = require('mongoose');
const { CLIENT_RENEG_LIMIT } = require('tls');
mongoose
    .connect(process.env.MONGO_URL)
    .then(() => console.log('已连接到MongoDB服务器'))
    .catch((err) => {
        console.log(err);
    });

app.use(express.json());
app.use('/api/users', userRoute);
app.use('/api/auth', authRoute);

app.listen(process.env.PORT || 5300, ()=>{
    console.log('监听端口5300');
});

请求情况

从请求截图可见,当前使用GET请求访问/api/auth/logowanie接口。


问题原因与解决方案

  1. 核心原因:代码中登录接口注册的是POST方法(router.post('/logowanie', ...)),但实际请求用了GET方法,Express会判定该路径无对应GET路由,因此返回Cannot GET错误。

  2. 解决步骤:

    • 在请求工具中将方法改为POST;
    • 在请求体(Body)中以JSON格式提交username和password参数;
    • 重新测试接口即可正常响应。
  3. 额外优化建议:

    • 错误逻辑避免用&&链式判断,改用if语句并添加return,防止多次响应:
      if (!user) {
          return res.status(401).json("用户名或密码错误");
      }
      // ...
      if (password !== req.body.password) {
          return res.status(401).json("用户名或密码错误");
      }
      

内容的提问来源于stack exchange,提问作者Z3eme

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 14:57:28