0

如何从 api( https://jsonplaceholder.typicode.com/posts/1 ) 获取数据并使用履行在操作中显示?

我的代码:

function apiCall(agent){
    https.get('https://jsonplaceholder.typicode.com/posts/1', (resp) => {
       let data = '';
       // A chunk of data has been recieved.
       resp.on('data', (chunk) => {
           data += chunk;
       });

       // The whole response has been received. Print out the result.
       resp.on('end', () => {
           console.log(JSON.parse(data).explanation);
       });

   }).on("error", (err) => {
       console.log("Error: " + err.message);
   });
}

我收到一个错误:

在函数中:getaddrinfo ENOTFOUND jsonplaceholder.typicode.com jsonplaceholder.typicode.com:443

4

3 回答 3

3

我已经测试过 API 服务器,它运行良好LINK


原因
我在尝试从云函数访问 API 服务器时遇到了同样的问题。那个时候计费不是解决办法,因为我已经启用了计费。


解决方案

  1. 谷歌云功能不允许您在没有计费的情况下访问出站互联网访问。您只需通过提供您的 ATM 详细信息来为您的项目启用计费,不用担心它是免费的。

  2. 您可以使用Google Cloud Function Simulator + 任何 localtunnel,例如ngrokserveo.net ,然后将该链接添加到您fulfillment webhook url的良好解决方案中以用于开发目的。

于 2018-06-27T07:12:37.907 回答
1

Google GitHub 上的 Actions 上托管了一个Developer Relations Quote 示例,该示例演示了如何从您的履行 webhook 进行外部 API 调用。

如示例的自述文件中所述,如果您使用 Cloud Functions for Firebase 部署您的履行,您需要升级您的计划,因为 Firebase 的免费层不支持进行出站网络调用。

于 2018-06-29T00:22:49.330 回答
0

您想在此页面中收到什么?我复制了你的代码并更改了

console.log(JSON.parse(data).explanation);

console.log(data);

它返回给我:

{
  "userId": 1,
  "id": 1,
  "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
  "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
}

这就是为什么我点击你的链接时得到的原因。

我的代码没有错误,只是我不存在“解释”字段。

由于我不明白消息在说什么,您的网站是否需要一些身份验证或其他什么?

于 2018-06-27T07:14:17.097 回答