我正在像这样使用nodejs + Express(v3):
app.use(express.bodyParser());
app.route('/some/route', function(req, res) {
var text = req.body; // I expect text to be a string but it is a JSON
});
我检查了请求标头,但缺少内容类型。即使“ Content-Type”是“ text /
plain”,它似乎也将解析为JSON。无论如何,有没有告诉中间件总是将正文解析为纯文本字符串而不是json?以前req
具有req.rawBody
此功能的早期版本可以解决此问题,但现在不再存在。在Express中强制将正文解析为纯文本/字符串的最简单方法是什么?
如果删除bodyParser()
中间件的使用,则应该为文本。您可以查看bodyParser
文档以获取更多信息:http : //www.senchalabs.org/connect/middleware-
bodyParser.html
删除此行:
app.use(express.bodyParser());
看起来你是对的。同时,您可以创建自己的rawBody
中间件。但是,您仍然需要禁用bodyParser()
。注意:req.body
仍然会undefined
。
这是一个演示:
app.js
var express = require('express')
, http = require('http')
, path = require('path')
, util = require('util');
var app = express();
function rawBody(req, res, next) {
req.setEncoding('utf8');
req.rawBody = '';
req.on('data', function(chunk) {
req.rawBody += chunk;
});
req.on('end', function(){
next();
});
}
app.configure(function(){
app.set('port', process.env.PORT || 3000);
app.use(rawBody);
//app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
});
app.post('/test', function(req, res) {
console.log(req.is('text/*'));
console.log(req.is('json'));
console.log('RB: ' + req.rawBody);
console.log('B: ' + JSON.stringify(req.body));
res.send('got it');
});
http.createServer(app).listen(app.get('port'), function(){
console.log("Express server listening on port " + app.get('port'));
});
test.js
var request = require('request');
request({
method: 'POST',
uri: 'http://localhost:3000/test',
body: {'msg': 'secret'},
json: true
}, function (error, response, body) {
console.log('code: '+ response.statusCode);
console.log(body);
})
希望这可以帮助。
web API以,但是消息的格式就像是JSON一样,例如。 在Spring中,此消息使用RestTemplate处理,JSON自动映射到POJO, 这会产生以下错误: org.springframework.web.client.RestClientExcture:无法提取响应:没有找到适合响应类型[class api的HttpMessageConzer。ModelDto]和内容类型[文本/普通;
问题内容: 我有以下代码: 我如何获取它来解析包含在字符串而不是文件中的XML? 问题答案: 我的代码库中有此功能,它应该对你有用。
问题内容: 我有一系列使用Beautiful Soup解析为单个文本文件的HTML文件。HTML文件的格式设置为使其输出始终为文本文件中的三行,因此输出将类似于: 但这很容易 换句话说,HTML文件的内容在每个文件中并不是真正的标准,但是它们始终会产生三行。 因此,我想知道如果我想从Beautiful Soup生成的文本文件然后将其解析为带有以下内容的列的CSV文件(使用上面的示例),应该从哪里开
问题内容: 我有一些这样的文字: 我想显示不带标签的内容: 我也不想应用标签,我想剥离它们。有什么简单的方法可以做到这一点? 角HTML: 问题答案: jQuery比SLOWER慢40倍左右 ,请不要将jQuery用于该简单任务。 用法: 使用angular.js: 用 :
问题内容: 我有Java程序,它将从服务器接收纯文本。纯文本可能包含URL。Java库中是否有任何Class可以将纯文本转换为HTML文本?还是其他图书馆?如果没有,那该怎么办呢? 问题答案: 我找到了使用模式匹配的解决方案。这是我的代码- 这是输入和输出- 输入文字是可变的: 输出:
问题内容: 我正在尝试找到一个Java lib / api,它将允许我将HTTP Request POST主体的内容转换为JSON对象。 理想情况下,我想使用Apache Sling 库(因为它们自然暴露在我的容器中)。 我找到的最接近的文件:将标头转换为JSON。 HTTP Post正文采用以下格式:所以我认为那里有些东西,但是我还没找到。 如果某些东西不存在,我可能只需要使用自定义()即可。有