我正在使用IBM Bluemix为学校项目提供Web服务。
我的项目需要从API请求JSON,因此我可以使用它提供的数据。
我遇到了API服务的http请求问题。我在Windows 10命令提示符中收到以下警告。
“语法错误:意外令牌”
我知道我的JSON请求有问题,但它确实是这样吗?
这是我的.js
文件以及运行时获得的错误屏幕的打印件。
/*eslint-env node*/
//------------------------------------------------------------------------------
// node.js starter application for Bluemix
//------------------------------------------------------------------------------
// HTTP request - duas alternativas
var http = require('http');
var request = require('request');
// cfenv provides access to your Cloud Foundry environment
// for more info, see: https://www.npmjs.com/package/cfenv
var cfenv = require('cfenv');
//chama o express, que abre o servidor
var express = require('express');
// create a new express server
var app = express();
// serve the files out of ./public as our main files
app.use(express.static(__dirname + '/public'));
// get the app environment from Cloud Foundry
var appEnv = cfenv.getAppEnv();
// start server on the specified port and binding host
app.listen(appEnv.port, '0.0.0.0', function() {
// print a message when the server starts listening
console.log("server starting on " + appEnv.url);
});
app.get('/home1', function(res){
http.get('http://developers.agenciaideias.com.br/cotacoes/json', function(res){
var body = '';
res.on('data', function(chunk){
body += chunk;
});
res.on('end', function(){
var json = JSON.parse(body);
});
var json = JSON.parse(res);
var cotacao = json["bovespa"]["cotacao"];
console.log("A sua cotação é "+cotacao);
});
});
答案 0 :(得分:1)
您需要使用在Promise.all(Iterable<any>|Promise<Iterable<any>> input) -> Promise
当.on('end'
显然不是字符串时尝试JSON.parse res
导致您的错误(res.toString()导致[Object object] ...因此错误不是有效的JSON
res
答案 1 :(得分:0)
尝试配置应用程序以解析json正文:
app.configure(function () {
app.use(express.json())
})
您将收到已解析的json对象