Node和Express的简单POST - 400坏请求

3

我一定做错了什么,因为这应该是世界上最简单的事情之一。

我想做的就是在Express路由中执行POST方法。

我的app.js文件内容如下:

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');

var index = require('./routes/index');

var app = express();

app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', index);

app.use(function(req, res, next) {
  var err = new Error('Not Found');
  err.status = 404;
  next(err);
});

app.use(function(err, req, res, next) {
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  res.status(err.status || 500);
  res.render('error');
});

module.exports = app;

我的 index.js 路由:

var express = require('express');
var router = express.Router();

router.get('/', function(req, res, next) {
    res.render('index', {title: 'Express'});
});

router.post("/test", function(req, res) {
    console.log("Hello...anyone!?");
    res.end();
});

module.exports = router;

GET请求正常。我可以在浏览器中输入http:/localhost:3000并访问成功。
当我向http:/localhost:3000/test发起POST请求时,会返回400 Bad Gateway错误。

你尝试过将POST放在GET之上吗? - Vsevolod Goloviznin
1
@TsarBomba,你能分享一下你是如何发送POST请求的吗? - Nehal J Wani
奇怪,你的代码在我这里运行没有任何问题。 - Nehal J Wani
尝试使用 app.use('*', index); 而不是 app.use('/', index); - Hosar
@NehalJWani 改变应用程序运行的端口也没有任何区别。 - Tsar Bomba
显示剩余3条评论
2个回答

3
最终,这与Node或发布的代码无关。我重新启动了电脑,问题就消失了。我找不到任何解释。

为什么要踩我?我已经澄清了我的问题,这是我最初发布时完全不知道的。这可能会真正帮助到某个人。太糟糕了。 - Tsar Bomba
1
讨厌者总是会讨厌。继续尽你最大的努力,不要让他们打击你的信心。 - Patrick Odum

2
如果有人觉得这篇文章有用,我也遇到了同样的问题,罪魁祸首是缺少头文件。我知道我需要 "Content-Type": "application/json" 头文件,我已经添加了,但我不知道我还缺少两个头文件。
对我来说,解决方案也是在 Postman 中添加 "Content-Length""Host" 头文件。
我看到其他人质疑 "Content-Length" 头文件的必要性,但在我的情况下,最少需要三个头文件: "Content-Type""Content-Length""Host" ,否则它将始终失败。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接