404问题解决?

POST http://localhost:3000/user/login 404 (Not Found),前端登录页面显示404,后台接口跟前端数据对接都没问题,求大佬解决???

const submitForm = (formEl) => {
      // if (!formEl) return;
      // formEl.validate((valid) => {
      //   console.log(222);
      //   if (valid) {
        register({ username: ruleForm.username, password: ruleForm.password }).then((res) => {
              if (res.status == "success") {
                ElMessage({
                  message: res.message,
                  type: "success",
                });
                router.push("/home");
              } else {
                ElMessage({
                  message: data.message,
                  type: "error",
                });
              }
            })
            .catch((err) => {
              ElMessage({
                message: err.message,
                type: "error",
              });
            });
// 用户登录
export function register(data) {
  return service({
    url: '/user/login',
    method: 'post',
    data
  })
}
//登录
exports.loginUser = (req, res) => {
    const { username,password } = req.body
    if (username === 'admin' && password === '123456') {
      res.json({ message: '登录成功', user: username });
    } else {
      res.status(401).json({ message: '登录失败,用户名或密码错误' });
    }
  }
let express = require("express");
let router = express.Router();
// let user = require("./API/user");
// let dept = require("./API/dept");
// let course = require("./API/course");
// let score = require("./API/score");
// let home = require("./API/home");
let login = require("./API/login");
 
// --------------------------登录相关-----------------------------------------------
// 列表
router.get('/user/login', login.loginUser);
 
module.exports = router;
let express = require("express");
let history = require('connect-history-api-fallback'); //用于处理路由配置 mode:history,强制刷新问题
let app = express();
let cors = require("cors");
// 导入 body-parser中间件解析表单数据
let bodyParser = require("body-parser");
let router = require("./router");

// 解析 url-encoded格式的表单数据
app.use(bodyParser.urlencoded({ extended: false }));
// 解析json格式的表单数据
app.use(bodyParser.json());
app.use(cors()); //配置跨域,必须在路由之前
app.use(router)              //配置路由
app.use(history())   //用于处理路由配置 mode:history,强制刷新问题
app.use(express.static(__dirname+'/static'))
 
app.listen(3000, () => {
  console.log("服务器启动成功");
});

我前端后端分别测试了一遍还是找不出问题,希望页面成功登录

阅读 855
avatarAI BotBETA

回答

问题出在后端路由配置上。你的后端代码为登录接口配置了一个 GET 请求,但前端代码是发送一个 POST 请求到 /user/login。由于 GET 和 POST 不匹配,因此后端无法找到对应的处理函数,返回了 404 错误。

你需要将后端的路由配置从 GET 改为 POST。修改后的代码应该如下:

let express = require("express");
let router = express.Router();
let login = require("./API/login");

// --------------------------登录相关-----------------------------------------------
// 改为 POST 请求
router.post('/user/login', login.loginUser);

module.exports = router;

这样,当前端发送 POST 请求到 /user/login 时,后端就能正确找到处理函数,处理登录请求。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏