如何在 Nodejs 中从自定义 api 获取对 jade 文件的响应
How to get response from custom api to jade file in Nodejs
我在使用 Nodejs 时遇到问题
我想做的是如下。我有一个 API 发送请求的地方。当我从 API 收到回复时,我想将其发送到我的 index.jade 文件。我已经从我的 API 收到了回复,但只是在控制台中。不在我的 html 文件中 (index.jade)。
代码如下:
app.js
app.get('/', function(req, res) {
var postData = '{'+
' "limit": "10",'+
' "page": 1,'+
' "filters": {'+
' "genre": [],'+
' "region": "",'+
'"prices": 2,'+
' "distance": 31,'+
' "longitude": "4.646219",'+
' "latitude": "52.387388",'+
' "eves": 1,'+
'"from_date": "17-12-2015",'+
'"end_date": "18-12-2014"'+
'}'+
'}';
var options = {
hostname: 'API url',
path: 'api path',
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Content-Length': postData.length,
}
};
var req = http.request(options, (res) => {
console.log(`STATUS: ${res.statusCode}`);
console.log(`HEADERS: ${JSON.stringify(res.headers)}`);
res.setEncoding('utf8');
res.on('data', (chunks) => {
console.log(`BODY: ${chunks}`);
var response = JSON.parse(chunks)
res.render('index',{
value: response
});
});
res.on('end', () => {
console.log('No more data in response.')
})
});
req.on('error', (e) => {
console.log(`problem with request: ${e.message}`);
});
res.on('data', function(chunk){
body += chunk;
});
res.on('end', function(){
var response = JSON.parse(body)
console.log(response)
console.log("Successful")
});
index.jade
p #{value}
注意:我是 node js 的新手。
如果我没看错,请尝试按以下方式更改您的代码。我发现在不同的回调函数中有相同的 req
和 res
变量,这会在这里带来混淆...
所以我想可能是同一个变量名引起了你的问题,把res
中的一个改成resp
来区分一下,也许对你有帮助。
var req = http.request(options, (resp) => {
var buffer = "";
console.log(`STATUS: ${resp.statusCode}`);
console.log(`HEADERS: ${JSON.stringify(resp.headers)}`);
resp.setEncoding('utf8');
resp.on('data', (chunks) => {
console.log(`BODY: ${chunks}`);
buffer += chunks; // accumulate data here
});
resp.on('end', () => {
console.log('No more data in response.');
res.render('index',{ // send the data received to client
value: buffer // maybe need to JSON.parse(buffer)?
});
})
});
我在使用 Nodejs 时遇到问题 我想做的是如下。我有一个 API 发送请求的地方。当我从 API 收到回复时,我想将其发送到我的 index.jade 文件。我已经从我的 API 收到了回复,但只是在控制台中。不在我的 html 文件中 (index.jade)。
代码如下:
app.js
app.get('/', function(req, res) {
var postData = '{'+
' "limit": "10",'+
' "page": 1,'+
' "filters": {'+
' "genre": [],'+
' "region": "",'+
'"prices": 2,'+
' "distance": 31,'+
' "longitude": "4.646219",'+
' "latitude": "52.387388",'+
' "eves": 1,'+
'"from_date": "17-12-2015",'+
'"end_date": "18-12-2014"'+
'}'+
'}';
var options = {
hostname: 'API url',
path: 'api path',
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Content-Length': postData.length,
}
};
var req = http.request(options, (res) => {
console.log(`STATUS: ${res.statusCode}`);
console.log(`HEADERS: ${JSON.stringify(res.headers)}`);
res.setEncoding('utf8');
res.on('data', (chunks) => {
console.log(`BODY: ${chunks}`);
var response = JSON.parse(chunks)
res.render('index',{
value: response
});
});
res.on('end', () => {
console.log('No more data in response.')
})
});
req.on('error', (e) => {
console.log(`problem with request: ${e.message}`);
});
res.on('data', function(chunk){
body += chunk;
});
res.on('end', function(){
var response = JSON.parse(body)
console.log(response)
console.log("Successful")
});
index.jade
p #{value}
注意:我是 node js 的新手。
如果我没看错,请尝试按以下方式更改您的代码。我发现在不同的回调函数中有相同的 req
和 res
变量,这会在这里带来混淆...
所以我想可能是同一个变量名引起了你的问题,把res
中的一个改成resp
来区分一下,也许对你有帮助。
var req = http.request(options, (resp) => {
var buffer = "";
console.log(`STATUS: ${resp.statusCode}`);
console.log(`HEADERS: ${JSON.stringify(resp.headers)}`);
resp.setEncoding('utf8');
resp.on('data', (chunks) => {
console.log(`BODY: ${chunks}`);
buffer += chunks; // accumulate data here
});
resp.on('end', () => {
console.log('No more data in response.');
res.render('index',{ // send the data received to client
value: buffer // maybe need to JSON.parse(buffer)?
});
})
});