【问题标题】:POST Request fail with Node.js and Express.jsPOST 请求因 Node.js 和 Express.js 失败
【发布时间】:2014-03-08 11:24:09
【问题描述】:

这里有新的网络开发者,来自 C 语言,一切都有些新意 :)

我正在学习一些快速学习,并坚持让 POST 请求正常工作。我在 Chrome 上使用 Advanced Rest Client 发送 POST 请求并收到错误,没有错误编号,只是一个简单的“计算机说不”。

我的 app.js:

var express = require('express')
    , http = require('http');

var app = express();

app.configure(function(){
    app.set('port', process.env.PORT || 3000);
    app.use(express.urlencoded());
    app.use(express.json());
});

app.get("/", function(req, res) {
    res.send("Hello, Express!");
});

app.get("/hi", function(req, res) {
    var message = "Hello :-)";
    res.send(message);
});

app.get("/users/:userId", function(req, res) {
    res.send("<h1>Hello user #" + req.params.userId);
});

app.post("/users", function(req, res) {
    res.send("Creating a new user with name " + req.body.username);
});

http.createServer(app).listen(app.get('port'), function(){
    console.log("Express server listening on port " + app.get('port'));
});

所有其他路由都有效,只是那个失败的 POST。

编辑:另外,我在发布时使用 text/html 作为内容类型。

我已经重新启动服务器,确保文件已保存,重新启动系统等。我猜问题是正文解析失败。任何帮助都会很棒,干杯。

【问题讨论】:

  • 您在服务器上或作为响应收到的错误究竟是什么?
  • 就是这样,它没有给出错误,只是说它无法发送请求。我切换了客户端,它现在可以工作了。
  • “说它无法发送请求”一个错误,但我从来没有遇到过 HTTP 错误显示为“计算机说不”。所以请添加你得到的实际错误。这可能需要进入开发人员工具,选择网络选项卡并向我们显示哪个网络请求失败。如果您无法获得可以粘贴的可理解文本表示,可以将屏幕截图附加到您的问题中。

标签: node.js post express


【解决方案1】:

express.json() 不解析text/html,因此您的路由处理程序中没有req.bodyreq.body.username 行会抛出错误。

我已经重新启动服务器,确保文件已保存,重新启动系统等。我猜问题是正文解析失败。

别猜了。调试和读取日志(app.use(express.logger('dev')));

【讨论】:

    猜你喜欢
    • 2011-09-07
    • 2015-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多