我正在使用节点请求来访问api上的数据。现在,当我使用以下代码访问正文时,将得到以下响应。
app.post("/", function(req, res){
//var series = req.body.series;
var circuits = req.body.Circuits;
var url = req.body.url
request("http://ergast.com/api/f1/circuits/" + circuits + ".json", function(error, response, body){
console.log(body);
res.write("<p>Here is the information about the circuit " + circuits + " in the " + url + " is about the circuit </p>")
});
})
我从Api得到以下答复。
{
"MRData": {
"xmlns": "http://ergast.com/mrd/1.4",
"series": "f1",
"url": "http://ergast.com/api/f1/circuits/brands_hatch.json",
"limit": "30",
"offset": "0",
"total": "1",
"CircuitTable": {
"circuitId": "brands_hatch",
"Circuits": [
{
"circuitId": "brands_hatch",
"url": "http://en.wikipedia.org/wiki/Brands_Hatch",
"circuitName": "Brands Hatch",
"Location": {
"lat": "51.3569",
"long": "0.263056",
"locality": "Kent",
"country": "UK"
}
}
]
}
}
}
现在的问题是我需要访问属性。例如,URL给我一个在段落标记中未定义的错误。 任何帮助将不胜感激。
答案 0 :(得分:1)
在您的console.log中应该是
console.log(JSON.parse(body));
或
var bodyParsed = JSON.parse(body);
var yourUrl = bodyParsed.MRData.url
正如我在评论中所说,您的主体是一个字符串,console.log(typeof body)返回字符串,因此需要将其解析为具有属性的对象。