我有以下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();
});
Run Code Online (Sandbox Code Playgroud)
现在,如果我发布类似的东西:
curl -d user=Someone -H Accept:application/json --url http://localhost:5000
Run Code Online (Sandbox Code Playgroud)
我Someone按预期得到了.现在,如果我想获得完整的请求体,该怎么办?我尝试过response.write(request.body)但是Node.js会抛出一个异常,说" 第一个参数必须是字符串或缓冲区 ",然后进入"无限循环",异常显示" 无法在发送后设置标头. "; 即使我做了var reqBody = request.body;然后写作也是如此response.write(reqBody).
这是什么问题?
另外,我可以在不使用的情况下获得原始请求express.bodyParser()吗?
我需要在Node.js中从(客户端)html按钮onclick事件调用服务器端函数的完整基本示例,就像在ASP.NET和C#中一样.
我是Node.js的新手并使用Express框架.
有帮助吗?
改进的问题:
//服务器端 :
var express = require('express');
var routes = require('./routes');
var user = require('./routes/user');
var http = require('http');
var path = require('path');
var app = express();
// all environments
app.set('views',__dirname + '/views');
app.set('port', process.env.PORT || 3000);
app.engine('html', require('ejs').renderFile);
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.static(path.join(__dirname, 'public')));
app.set('view engine', 'html');
app.use(app.router);
app.get("/",function(req,res)
{
res.render('home.html');
});
// development only
if ('development' == app.get('env')) {
app.use(express.errorHandler());
}
app.get('/', routes.index);
app.get('/users', user.list);
http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port')); …Run Code Online (Sandbox Code Playgroud) 我在express.json()和express.urlencoded()上找不到任何文档.他们每个人到底做了什么?
我收到错误"TypeError:无法读取未定义的属性'_id'"在简单的帖子请求上将文档保存到名为的集合中books,我的有效负载如下所示:
{
"name": "practical view",
"author": "DN",
"location": "room 50"
}
Run Code Online (Sandbox Code Playgroud)
我只是db.books.save()在快递路线上做.由于我没有传递id,理想情况下这应该可行,但在这种情况下不行.
下面是我在节点服务器上获得的完整错误转储:
C:\NodeProjects\ExpressTutorial\Library\node_modules\mongojs\node_modules\mongodb\lib\mongodb\mongo_client.js:411
throw err
^
TypeError: Cannot read property '_id' of undefined
at Collection.save (C:\NodeProjects\ExpressTutorial\Library\node_modules\mongojs\node_modules\mongodb\lib\mongodb\collection.js:393:15)
at C:\NodeProjects\ExpressTutorial\Library\node_modules\mongojs\index.js:203:65
at apply (C:\NodeProjects\ExpressTutorial\Library\node_modules\mongojs\node_modules\thunky\index.js:16:28)
at C:\NodeProjects\ExpressTutorial\Library\node_modules\mongojs\node_modules\thunky\index.js:20:25
at Db.collection (C:\NodeProjects\ExpressTutorial\Library\node_modules\mongojs\node_modules\mongodb\lib\mongodb\db.js:488:44)
at C:\NodeProjects\ExpressTutorial\Library\node_modules\mongojs\index.js:268:7
at apply (C:\NodeProjects\ExpressTutorial\Library\node_modules\mongojs\node_modules\thunky\index.js:16:28)
at C:\NodeProjects\ExpressTutorial\Library\node_modules\mongojs\node_modules\thunky\index.js:20:25
at C:\NodeProjects\ExpressTutorial\Library\node_modules\mongojs\index.js:300:4
at C:\NodeProjects\ExpressTutorial\Library\node_modules\mongojs\node_modules\mongodb\lib\mongodb\mongo_client.js:408:11
31 Aug 00:14:30 - [nodemon] app crashed - waiting for file changes before starting...
Run Code Online (Sandbox Code Playgroud) 我有一个包含对象的 post api,但我无法在控制台中打印它的抛出未定义我以为我缺少正文解析器但在添加正文解析器后我看到错误body-parser deprecated bodyParser: use individual json/urlencoded middlewares任何帮助将不胜感激。
路由.js
var express = require('express');
var bodyParser = require('body-parser');
var Diagram = require('./api/diagram/diagram.controller');
var router = express.Router();
router.post('/saveUpdateDiagram',bodyParser,function(req,res){
console.log(req.body);
});
Run Code Online (Sandbox Code Playgroud)
应用程序.js
var express = require('express');
var path = require('path');
var app = express();
var bodyParser = require('body-parser');
var router = express.Router();
var route = require('./server/routes').router;
var mongoose = require('mongoose');
mongoose.connection.on('connected', function() {
console.log('MongoDB connected ');
});
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', route);
app.use(bodyParser.urlencoded({
extended: false
}))
app.use(bodyParser.json())
app.listen(8760, function() {
console.log('I …Run Code Online (Sandbox Code Playgroud) 我正在尝试模拟对基于 NodeJS Express 的服务器应用程序的 POST 请求。它正在运行localhost:3000(JS Fiddle:http://jsfiddle.net/63SC7/)
我使用以下 CURL 行:
curl -X POST -d "{\"name\": \"Jack\", \"text\": \"HULLO\"}" -H "Content-Type: application/json" http://localhost:3000/api
Run Code Online (Sandbox Code Playgroud)
但收到错误消息:
Cannot read property 'text' of undefined
Run Code Online (Sandbox Code Playgroud)
有什么想法我做错了吗?
注意:我可以使用此行成功发出 GET 请求:
curl http://localhost:3000/api
我想记录传递给我的端点的所有查询参数.每当他们打电话给我时,即通过GET,POST.我能够打印所有GET查询参数,但与POST参数挣扎.
我使用req.body,但它不起作用它只打印[对象对象]甚至JSON.stringify没有帮助.
任何人都可以指向我正确的来源寻找它
我正在阅读《使用Node和Express进行Web开发》一书,遇到了麻烦。
我被指示将以下内容放入我的应用程序文件,但它似乎body-parser已被弃用,将无法使用。如何获得相同的功能?
这是我当前的代码:
app.use(require('body-parser')());
app.get('/newsletter', function(req, res){
// we will learn about CSRF later...for now, we just
// provide a dummy value
res.render('newsletter', { csrf: 'CSRF token goes here' });
});
app.post('/process', function(req, res){
console.log('Form (from querystring): ' + req.query.form);
console.log('CSRF token (from hidden form field): ' + req.body._csrf);
console.log('Name (from visible form field): ' + req.body.name);
console.log('Email (from visible form field): ' + req.body.email); res.redirect(303, '/thank-you');
});
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个简单的html页面,在单击按钮时,将值从文本输入字段发送到节点服务器,然后在控制台上输入所输入的值.知道使用express 4,以前的bodyparser已被弃用,并在此处讨论:bodyParser已弃用express 4
但是使用以下代码时,启动服务器时仍然会出错:
var express = require('express');
var app = express();
app.use(express.static('resources'));
app.use(express.static(__dirname));
app.use(express.bodyParser.urlencoded());
app.get('/', function (req, res) {
res.sendFile( __dirname + "/" + "index.html" );
})
app.post('/java_preview', function (req, res) {
console.log("Request for java_preivew:");
console.log(req.body.url);
})
var server = app.listen(3000, function () {
console.log("Server started...")
var host = server.address().address
var port = server.address().port
console.log("Listening at http://%s:%s", host, port)
})
Run Code Online (Sandbox Code Playgroud)
HTML:
$(document).ready(function(){
$('#previewButton').click(function () {
//var enterURL=$('inputUrl').val();
//alert("Button Clicked:"+$('#inputUrl').val());
$.post("java_preview", {url: $('#inputUrl').val()} );
});
});
Run Code Online (Sandbox Code Playgroud)
错误日志:
/Users/-/Google Drive/papers/ISWC2016_demo/webpages/node_modules/express/lib/express.js:99 …Run Code Online (Sandbox Code Playgroud) 我正在使用 Stripe 提供的代码来测试 webhook。Stripe 机密和端点机密已经过三重检查。
条纹版本:6.19 Body-Parser:1.19
当我在 Stripe 仪表板上测试 webhook 时,我得到了结果:(测试 webhook 错误:400)没有找到与负载的预期签名匹配的签名。您是否正在传递从 Stripe 收到的原始请求正文?
任何帮助,将不胜感激。
var bodyParser - require('body-parser);
// Using Express
const app = require('express')();
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
// Set your secret key: remember to change this to your live secret key in production
// See your keys here: https://dashboard.stripe.com/account/apikeys
const stripe = require('stripe')('sk_test_VPw...');
// Find your endpoint's secret in your Dashboard's webhook settings
const endpointSecret = 'whsec_...';
// Use body-parser to retrieve the raw …Run Code Online (Sandbox Code Playgroud) 我正在学习Node.js - 在通过一些例子工作,我正在使用'express'框架,我已经安装了body-parser(使用npm install body-parser)并且它很好..但是,当我启动我的应用程序时 - 节点显示:
body-parser deprecated bodyParser: use individual json/urlencoded middlewares: app.js:30:11
body-parser deprecated undefined extended: provide extended option: node_modules\body_parser\index.js:85:29
Run Code Online (Sandbox Code Playgroud)
然而它继续显示它在端口xxxx上的"正常"监听.
当然,只是学习 - 我没有大量的包经验,但我把第一行称为'表达4'不喜欢我的身体解析器版本 - 虽然我从快递'网站上的链接得到它.
http://expressjs.com/resources/middleware.html
https://github.com/expressjs/body-parser?_ga=1.200820398.1885847446.1420349783
Run Code Online (Sandbox Code Playgroud)
我的app js目前看起来像这样 - 而且它正在工作,所以我不确定如何'接受'这个消息.(带有"app.use(bodyParser());"的行是上面的第30行引用)
var express = require( 'express' );
var path = require( 'path' );
var bodyParser = require( 'body-parser' );
var app = express();
// configure app
app.set( 'view engine', 'ejs' );
app.set( 'views', path.join( __dirname, 'views' ) );
// use middleware
// Body Parser for express …Run Code Online (Sandbox Code Playgroud) express ×11
node.js ×11
javascript ×5
body-parser ×2
curl ×1
html ×1
mongodb ×1
mongojs ×1
webhooks ×1