当前位置: 首页 > 面试题库 >

使用Node.js和Express进行发布时如何访问请求正文?

况经纬
2023-03-14
问题内容

我有以下Node.js代码:

var express = require('express');
var app = express.createServer(express.logger());
app.use(express.bodyParser());

app.post('/', function(request, response) {
    response.write(request.body.user);
    response.end();
});

现在,如果我发布类似的内容:

curl -d user=Someone -H Accept:application/json --url http://localhost:5000

我得到Someone了预期的结果。现在,如果我想获得完整的请求正文怎么办?我尝试这样做,response.write(request.body)但是Node.js抛出一个异常,说“
第一个参数必须是字符串或Buffer ”,然后转到“无限循环”,并出现异常,指出“ 发送标头后不能设置标头 ”。即使我var reqBody = request.body;再写了也是这样response.write(reqBody)

这里有什么问题?

另外,我可以不使用而直接获得原始请求express.bodyParser()吗?


问题答案:

Express 4.0及更高版本:

$ npm install --save body-parser

然后在您的节点应用程序中:

const bodyParser = require('body-parser');
app.use(bodyParser);

Express 3.0及以下版本:

尝试在您的cURL调用中传递此代码:

--header "Content-Type: application/json"

并确保您的数据为JSON格式:

{"user":"someone"}

另外,您可以在node.js代码中使用console.dir来查看对象中的数据,如以下示例所示:

var express = require('express');
var app = express.createServer();

app.use(express.bodyParser());

app.post('/', function(req, res){
    console.dir(req.body);
    res.send("test");
});

app.listen(3000);


 类似资料:
  • 这里有什么问题? 另外,我是否可以不使用而直接获取原始请求?

  • 首先:我是node的新手,也是编程的初学者。 我正在尝试用Express创建一个小型web应用程序,其唯一目标是从一个没有开放API的网站获取并重新格式化数据。 为了做到这一点,我决定学习刮痧,这把我带到了Cheerio和Request。 我以reddit为例来学习。本例的最终目标是收集首页上帖子的名称和href以及指向评论的url,然后进入该页面以刮取评论的数量。 下面是在GET请求中调用到/的

  • 问题内容: 当我使用Express时,我的代码是: 我将如何获得 原始请求正文 ? 问题答案: 编辑2: 主体解析器模块的1.15.2版引入了原始模式,该模式将主体作为Buffer返回。默认情况下,它还会自动处理deflate和gzip解压缩。用法示例: 默认情况下,该对象具有以下默认选项: 如果您希望原始解析器解析以外的其他MIME类型,则需要在此处进行更改。它还将支持通配符匹配,例如或。 注意

  • 问题内容: 我已经通过使用nodejs + express制作了简单的nodejs应用程序。现在,我要进行用户身份验证。我想通过使用猫鼬来实现会话处理。你能举个例子吗? 问题答案: 一些有用的链接: 如何在node.js中实现登录身份验证 在node.js和mongodb中创建注册和登录表单 另外,会话管理不是由Mongoose完成,而是由connect-mongodb或connect- redi

  • 问题内容: 我想从一个URL请求重定向到另一个“ POST”请求,如下所示: 但是,我无法重定向到“ / test”页面,因为它是POST请求。 那么,在保持“ / test”请求POST的情况下,如何使重定向工作呢? 问题答案: 你可以这样做: 它将保留send方法。 供参考,307 http代码规范为: 307临时重定向(自HTTP / 1.1起)在这种情况下,应使用另一个URI重复请求,但是

  • 问题内容: 我读了一些将jsons发布到服务器的示例。 有人说: OkHttp是Java提供的HttpUrlConnection接口的实现。它提供用于编写​​内容的输入流,并且不知道(或不在乎)内容的格式。 现在,我想用名称和密码的参数对URL进行常规发布。 这意味着我需要自己将名称和值对编码为流? 问题答案: 当前接受的答案已过期。现在,如果您想创建一个发布请求并向其中添加参数,则应该使用Mul