我似乎无法恢复发送到我的Node.js服务器的发布请求的表单数据。我在服务器代码和发布请求(在chrome中使用postman发送)的下方放置了:
发布请求
POST /api/login HTTP/1.1
Host: localhost:8080
Cache-Control: no-cache
----WebKitFormBoundaryE19zNvXGzXaLvS5C
Content-Disposition: form-data; name="userName"
jem
----WebKitFormBoundaryE19zNvXGzXaLvS5C
NodeJS服务器代码
var express = require('express'); // call express
var app = express(); // define our app using express
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.use(bodyParser());
app.all('/*', function(req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Headers', 'Content-Type,accept,access_token,X-Requested-With');
next();
});
var port = process.env.PORT || 8080; // set our port
var router = express.Router(); // get an instance of the express Router
router.get('/', function(req, res) {
res.json({ message: 'I am groot!' });
});
// Login
router.route('/login')
.post(function(req, res){
console.log('Auth request recieved');
// Get the user name
var user = req.body.userName;
var aToken = getToken(user);
res.json({
'token':'a_token'
});
});
app.use('/api', router);
app.listen(port);
登录方法尝试获取req.body.userName
,但是req.body
始终为空。我在SO上看到过其他描述这种行为的案例,但是没有相关的答案在这里适用。
感谢您的帮助。
通常,快速应用程序需要指定适当的主体解析器中间件才能req.body
包含主体。
[编辑]
// Put this statement near the top of your module
var bodyParser = require('body-parser');
// Put these statements before you define any routes.
app.use(bodyParser.urlencoded());
app.use(bodyParser.json());
首先,您需要将body-parser添加到的dependencies
属性package.json
,然后执行npm update
。
bodyParser.urlencoded()
主体解析器将无法工作。请参阅此处建议的模块以解析多部分实体。问题内容: 使用express 3.1.0,我有一个非常简单的形式: 并在app.js中: 尝试发布此表单时,我得到: 并在控制台中: 我在这里想念什么? 问题答案: 您的示例对我有用。我删除了对用户,用户和路由的引用,以便可以运行它,并且HTTP POST已接收并正确显示在控制台中。 我怀疑该错误是在您的User.addUser()代码中。
问题内容: 我想获取使用表单从页面传递的数据,并在重定向的页面中使用该数据。 我的客户端有以下表格: 我的服务器中有这个脚本: 问题答案: 使用)中间件: 然后,表单值将在req.body上: 设置允许bodyParser接受包括嵌套对象在内的表单数据中的json之类的数据。例如,使用javascript发送而不是使用传统HTML格式发送的名称/值对。如果不需要,可以将扩展值设置为false。
问题内容: 我正在启动我的第一个Node.js服务器。我正在尝试遵循Node.js中的教程。 安装完Node.js并执行后,下一条指令是通过运行启动服务器,这将产生以下错误: 似乎它需要一个名为express的模块,因此我环顾四周,找到了可以解决此问题的命令。但是,出现以下错误: 问题答案: 对于以前跑步的人来说,似乎可以解决该问题
问题内容: 我正在尝试让我的函数返回http get请求,但是,无论如何,它似乎在?scope中丢失了。我对Node.js不熟悉,因此不胜感激 问题答案: 当然,您的日志会返回:您在完成请求之前先进行日志。问题不是范围,而是 异步性 。 是异步的,这就是为什么它将回调作为参数的原因。做您在回调中要做的事情(传递给的):
原理 对于POST请求的处理,koa-bodyparser中间件可以把koa2上下文的formData数据解析到ctx.request.body中 安装koa2版本的koa-bodyparser@3中间件 npm install --save koa-bodyparser@3 举个例子 例子代码 demo源码 https://github.com/ChenShenhai/koa2-note/blo
问题内容: 我有一个名为“ localhost:3000 / returnStat”的服务,该服务应将文件路径作为参数。例如“ /BackupFolder/toto/tata/titi/myfile.txt”。 如何在浏览器上测试此服务?例如,如何使用Express格式化此请求? 问题答案: 我尚未测试您的代码,但其他方法可行 如果您想从请求网址获取路径信息 1.如果您获取的URL参数仍然无法读取