NodeJS - 是否可以在新请求中解析和使用 JSON 响应正文?



首先,请理解我是nodejs的新手,事实上javascript所以相应地调整你的反应,因为我可能不熟悉对你来说似乎非常明显的概念。

是否有可能(如果是,请指出我正确的方向(在新请求中解析和使用来自request.get调用的响应正文?

例如:

var eventDetails;
function getLatestEvent() {
var options = {
url: 'http://localhost:4000/events/get/latest',
json: true,
headers: {
'User-Agent': 'request'
}
};
return new Promise(function(resolve, reject) {
request.get(options, function(err, resp, body) {
if (err) {
reject(err);
} else {
resolve(body);
console.log(body);
}
})
})
}
function resolveLatestEvent() {
var eventsPromise = getLatestEvent();
eventsPromise.then(function(result) {
eventDetails = result;
// Here I would like to make a new POST request using parts of 
// the JSON response from the GET request above
// How can I parse and use the response body in the request,
// assuming the request looks something like below

// Send POST request
const config = { headers: { 'Content-Type': 'application/json' } };
request.post({
url: 'http://localhost:3000/events/notify',
headers: {}, 
data: {
title: '',
team: '',
day: '',
creator: '',
description: '',
ticket: ''
}
}, config);
// log result
console.log(eventDetails);
}, function(err) {
console.log(err);
})
}
console.log('Fetching latest event data and making new POST request');
resolveLatestEvent();

来自 GET 请求的示例响应正文:

[ { title: 'test title',
team: 'TEST',
description: 'asd asd asdf sdafsda',
ticket: 'ABC-12345',
day: 'Today at 10pm',
creator: 'user_name' } ] }

由于正文是一个 JavaScript 对象,您可以使用.或键['content']引用它。

因此,您将获得回报并使用:

eventsPromise[0].title

eventsPromise[0]['title']

由于响应在数组中,您应该引用所需的位置,或者只是迭代以获得所有位置。

上面的代码示例中的正确解决方案如下:

function resolveLatestEvent() {
var eventsPromise = getLatestEvent();
eventsPromise.then(function(result) {
eventDetails = result;
const config = { headers: { 'Content-Type': 'application/json' } };
axios({
method: 'post',
url: 'http://localhost:3000/events/notify',
headers: {}, 
data: {
title: eventDetails[0].title,
team: eventDetails[0].team,
day: eventDetails[0].day,
creator: eventDetails[0].creator,
description: eventDetails[0].description,
jira: eventDetails[0].ticket
}
}, config);

// Log out what we get for debugging
//console.log('here are the eventDetails', eventDetails)

}, function(err) {
console.log(err);
})
}

最新更新