javascript Express路由器无法处理POST请求

gxwragnw  于 2022-12-28  发布在  Java
关注(0)|答案(3)|浏览(159)

我正在开始使用MEAN Stack这个东西。我正在开发一个小型的测试/初学者应用程序来学习基础知识。我目前正在尝试快速路由器的不同路线。我在让路线正确工作方面遇到了一些麻烦。
当我进入localhost:8000/api时,它运行得很好。但是当我试图访问localhost:8000/api/users时,它返回了一个404错误:(
这是我的密码

var express = require('express');
var app = express(); 
var bodyParser = require('body-parser'); 
var morgan = require('morgan'); 
var mongoose = require('mongoose'); 
var port = process.env.PORT || 8000; 
var User = require('./app/models/user');

mongoose.connect('mongodb://localhost:27017/ApiDataBase');

app.use(bodyParser.urlencoded({ extended: true}));
app.use(bodyParser.json());

app.use(function(req, res, next) 
{
  res.setHeader('Access-Control-Allow-Origin', '*');
  res.setHeader('Access-Control-Allow-Methods', 'GET', 'POST');
  res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type, \
22 Authorization');
  next();
});

app.use(morgan('dev'));

// testing if express runs

app.get('/', function(req, res) {
  res.send('Welcome to this awesome site!');
});

// creating new instance of the router

var apiRouter = express.Router();

apiRouter.use(function(req, res, next){

  console.log('Somebody came to vist');

  next();
});

// testing the router

apiRouter.get('/', function(req, res) {
  res.json({ message: 'WWWUUUUHHÚÚÚ Welcome!'});
});

// I'm not getting this part to work

apiRouter.route('/users')

  .post(function(req, res) {

    var user = new User();

    user.name = req.body.name;
    user.username = req.body.username;
    user.password = req.body.password;

    user.save(function(err) {
        if(err){

            if(err.code == 11000)
                return res.json({ success: false, message: 'Þessi notandi er þegar til'});
            else
                return res.send(err);
        }

            res.json({ message: 'Notandi stofanður'});
    });

})

app.use('/api', apiRouter);

app.listen(8000);
console.log('Magic happens on port' + port);
qcbq4gxm

qcbq4gxm1#

当我尝试访问localhost:8000/API/users时,它返回404错误
你没有GET路由到localhost:8000/api/users,你有POST路由到它:

apiRouter.route('/users')

  .post(function(req, res) {

也就是说,当你向localhost:8000/api/users发送一个GET请求时,express找不到路由,因为它不存在,你应该用POST请求测试它。

4ioopgfo

4ioopgfo2#

您声明了两次终结点“/”,一次在app.get('/'...)中,另一次在apiRouter.get('/'...
删除此块,它应该工作:

// testing the router
apiRouter.get('/', function(req, res) {
  res.json({ message: 'WWWUUUUHHÚÚÚ Welcome!'});
});
1mrurvl1

1mrurvl13#

其原因可能是安装错误,只需重新安装快速粉碎机
您可以在终端上使用以下命令安装它。
· npx安装快速发电机--hbs
--hbs表示查看发动机手把

相关问题