Express.js:API URL和res.json,使用来自npm的请求包

时间:2016-02-23 23:49:03

标签: javascript json node.js api express

我想知道如何让我的API返回有效的JSON对象。

我目前正在使用以下代码发送回复:

res.json({ foo: 'bar', secret: 'code' });

我也尝试过:

res.setHeader('Content-Type', 'application/json');
res.send(JSON.stringify({ foo: 'bar', secret: 'code' }));

当我在浏览器中访问API URL时,上述两种方法都有效。我得到了预期的结果:

{
  "foo": "bar",
  "secret": "code"
}

另一方面,我在从URL解析JSON响应时遇到问题(以下示例使用request中的npm包):

request({
    url: API-URL,
    json: true
}, function (error, response, body) {
    if (!error) {
      console.log(body);
    } else {
      console.log(error);
    }
})

使用上面的代码,我得到以下错误响应:

{
  "code": "ENOTFOUND",
  "errno": "ENOTFOUND",
  "syscall": "getaddrinfo",
  "hostname": <<Redacted>>,
  "host": <<Redacted>>,
  "port": 443
}

我已尝试插入第三方API网址并且工作正常(例如:Google地图和OpenWeatherAPI),因此我非常确定我使用request正常。我猜测在设置API时我错过了一个步骤(或者我做错了什么)?

https://jsonformatter.curiousconcept.com/中测试我的API网址,格式化的JSON对象会显示,但无论我如何设置响应标头和编码,我都会得到以下内容: Error: Invalid encoding, expecting UTF-8, UTF-16 or UTF-32.[Code 29, Structure 0]

任何建议都将不胜感激!

编辑: 以上是在一个实时Web应用程序中,Express正常工作(应用程序中的其他所有工作正常,JSON响应只是不能与request或jQuery很好地协作。

0 个答案:

没有答案