[英]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/users
的GET
路由,但是有到它的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.