Node.js 节点js request.post回调未启动
我试图将一些JSON数据从一个节点js应用程序发送到另一个用Flask编写的web服务。我正在尝试使用请求库,并查看了问题和答案 基于这些示例,我提出了以下简单的应用程序。应用程序将JSON数据发送到我的flask服务器,但不获取/触发回调。我已经检查了Flask应用程序是否通过返回了一些数据,并且工作正常。 我哪里做错了 [这是我的整个app.js]Node.js 节点js request.post回调未启动,node.js,express,http-post,httprequest,Node.js,Express,Http Post,Httprequest,我试图将一些JSON数据从一个节点js应用程序发送到另一个用Flask编写的web服务。我正在尝试使用请求库,并查看了问题和答案 基于这些示例,我提出了以下简单的应用程序。应用程序将JSON数据发送到我的flask服务器,但不获取/触发回调。我已经检查了Flask应用程序是否通过返回了一些数据,并且工作正常。 我哪里做错了 [这是我的整个app.js] var express = require("express"); var request = require('request');
var express = require("express");
var request = require('request');
var app = express();
app.set('view engine', 'pug');
app.get('/', function(req, res) {
console.log("here...")
request({
url: 'http://localhost:5000/receive_user_response',
method: "POST",
headers: {
"content-type": "application/json"
},
json: { // <--- I have also tried calling this as "body"
user_id: "some id...",
user_info: "some info..."
},
function(err, res, data) {
console.log('err', err) // <---- never prints any thing from here!
console.log('res', res)
console.log('data', data)
if (!err && res.statusCode == 200) {
console.log(data);
}
}
})
console.log("here...done..")
});
var server = app.listen(3000, function() {
console.log("Listening on port %s...", server.address().port);
});
var express=require(“express”);
var请求=要求(“请求”);
var-app=express();
应用程序集(“查看引擎”、“帕格”);
app.get('/',函数(req,res){
log(“此处…”)
请求({
网址:'http://localhost:5000/receive_user_response',
方法:“张贴”,
标题:{
“内容类型”:“应用程序/json”
},
json:{/这不是真正的答案,但我可以通过使用而不是请求来让它工作
var express = require("express");
var app = express();
var rp = require('request-promise');
var options = {
method: 'POST',
uri: 'http://localhost:5000/receive_user_response',
body: {
some: 'payload'
},
json: true // Automatically stringifies the body to JSON
};
app.set('view engine', 'pug');
app.get('/', function(req, res) {
rp(options).then(function(res) {
console.log(res);
}).catch(function(err) {
console.log("error!");
});
});
var server = app.listen(3000, function() {
console.log("Listening on port %s...", server.address().port);
});
回调函数必须是request
函数的第二个参数。您不小心将其放在了json对象中。下面的方法可以工作
request({
url: 'http://localhost:5000/receive_user_response',
method: "POST",
headers: {
"content-type": "application/json"
},
json: { // <--- I have also tried calling this as "body"
user_id: "some id...",
user_info: "some info..."
}
},
function(err, res, data) {
console.log('err', err) // <---- never prints any thing from here!
console.log('res', res)
console.log('data', data)
if (!err && res.statusCode == 200) {
console.log(data);
}
}
)
请求({
网址:'http://localhost:5000/receive_user_response',
方法:“张贴”,
标题:{
“内容类型”:“应用程序/json”
},
json:{//我不确定这是否只是将代码放入SO中的问题,但在回调函数之前,您似乎缺少了一个}
。您确定吗..在我看来没问题…是的,我非常确定。您在请求时有一个开口{
({
之后是属性url
,方法
,标题
,和json
。关闭}
对于json
,您可以在不关闭opts
对象的情况下立即使用回调函数。callback
是一个单独的参数您是对的!我以为该请求只需要一个对象列表……但实际上它需要两个对象:一个是选项,另一个是回调。不用担心!我更喜欢无论如何,请求承诺
模块我自己!
let options = {
url: 'http://localhost:5000/receive_user_response',
method: "POST",
headers: {
"content-type": "application/json"
},
json: { // <--- I have also tried calling this as "body"
user_id: "some id...",
user_info: "some info..."
}
};
request(options,
function(err, res, data) {
console.log('err', err) // <---- never prints any thing from here!
console.log('res', res)
console.log('data', data)
if (!err && res.statusCode == 200) {
console.log(data);
}
}
)