繁体   English   中英

Express 路由器不适用于发布请求

[英]Express router not working for post requests

我开始使用整个 MEAN Stack 的东西。 我正在整理一个小型测试/初学者应用程序来学习基础知识。 我目前正在尝试使用不同路线的快速路由器。 我在让路线正常工作时遇到了一些麻烦。

当我 go 到 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);

当我尝试访问localhost:8000 / api / users时,它返回404错误

您没有到localhost:8000/api/usersGET路由,但是有到它的POST路由:

apiRouter.route('/users')

  .post(function(req, res) {

就是说,当您将GET请求发送到localhost:8000/api/users ,express无法找到该路由,因为您不存在该路由。 您应该针对POST请求进行测试。

您要声明两次端点'/',一次是在app.get('/'...) ,一次是apiRouter.get('/'...

删除此块,它应该可以工作:

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

其原因可能是安装错误,重新安装 express-grnerator 即可

您可以在终端上使用以下命令安装它。

• npx 安装 express-generator --hbs

--hbs 表示查看引擎把手

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM