serverless云函数创建api时如何调用第三方api-问答-便宜云服务器开发者社区-便宜云服务器

云原生社区 > Serverless > 正文

serverless云函数创建api时如何调用第三方api

以下是相关代码,但是一直无法成功,由于文档没有相关内容,不知道该如何解决! 1679500098354.jpg

const fetch = require('node-fetch');
module.exports.handler = async function(event, context, callback) {
  var request = JSON.parse(event);
  var page = request.queryParameters.page;
  var id = request.queryParameters.id;

  try {
    const apiResponse = await fetch('https://www.thecolorapi.com/id?hex=ff758c');
    const apiData = await apiResponse.json();
    console.log(apiData);
    const responseObject = {
      isBase64Encoded: false,
      statusCode: 200,
      headers: {
        "Content-type": "application/json; charset=utf-8"
      },
      body: JSON.stringify(apiData)
    };
    if (page == 2 && id == 3) {
      callback(null, responseObject);
    }
  } catch (err) {
    console.error(err);
    callback(err);
  }
};

展开
收起
游客iwpybvqpy6oti 2023-03-22 23:50:51 814 1
4 条回答
写回答
取消 提交回答
  • 月移花影,暗香浮动

    在使用Serverless框架创建API时,调用第三方API的代码一般可以分为以下几个步骤:

    1. 引入API请求库:例如,可以使用node-fetch或axios等第三方库来发送HTTP请求。

    2. 构造API请求参数:根据第三方API的要求,构造请求参数,如请求头、请求体、请求方法等。

    3. 发送API请求:调用API请求库的API方法发送请求,并获取响应。

    4. 处理API响应:根据API响应的格式,解析响应数据,并根据业务需求处理返回结果。

    以下是一个使用node-fetch库发送API请求的示例代码:

    const fetch = require('node-fetch');
    
    module.exports.handler = async (event, context) => {
      const url = 'https://api.example.com/v1/users';
      const headers = {
        'Content-Type': 'application/json',
        'Authorization':'Bearer YOUR_ACCESS_TOKEN'
      };
      const data = {
        name: 'John Doe',
        email: 'john.doe@example.com',
      };
      const response = await fetch(url, {
        method: 'POST',
        headers: headers,
        body: JSON.stringify(data),
      });
      const result = await response.json();
      return {
        statusCode: response.status,
        body: JSON.stringify(result),
      };
    };
    

    在这个示例中,我们使用node-fetch库发送了一个POST请求到 https://api.example.com/v1/users 这个API接口,请求需要带上Authorization头和JSON格式的请求体,接口返回的数据也是JSON格式的。最后,我们将返回结果作为API响应返回给客户端。

    需要注意的是,不同的第三方API可能有不同的入参和返回格式,需要根据 API文档 自行构造请求参数和解析响应数据。

    2023-03-23 10:47:36
    赞同 展开评论 打赏
  • 发表文章、提出问题、分享经验、结交志同道合的朋友

    代码有问题,声明了一个空的apiData对象,然后又在try块中重新声明了一个apiData常量。

    const apiResponse = await fetch('https://www.thecolorapi.com/id?hex=ff758c');
    const apiData = await apiResponse.json();
    console.log(apiData);
    
    const fetch = require('node-fetch'); 
    let apiData = {};
    
    module.exports.handler = async function(event, context, callback) {
      const request = JSON.parse(event);
    
    2023-03-23 09:29:06
    赞同 展开评论 打赏
  • 天下风云出我辈,一入江湖岁月催,黄土霸业谈笑中,不胜人生一场醉

    CreateSpace - 创建小程序服务空间,看一下相关的参数配置:https://help.aliyun.com/document_detail/456957.htm?spm=a2c4g.11186623.0.0.5a972829llR6Vq

    2023-03-23 08:50:27
    赞同 展开评论 打赏
  • 您好,您的代码中的fetch调用第三方API的方式是正确的。但是,您的代码中有一些错误。您的代码中的response应该是apiResponse,因为您在try块中使用了apiResponse。此外,您在try块中使用了response.json(),但是您的变量名是apiResponse。因此,您应该使用apiResponse.json()。最后,您的responseObject应该是JSON.stringify(apiData),而不是apiData。这是您的代码的正确版本:

    const fetch = require('node-fetch'); const apiData = {}; module.exports.handler = async function(event, context, callback) { var request = JSON.parse(event); var page = request.queryParameters.page; var id = request.queryParameters.id;

    try { const apiResponse = await fetch('https://www.thecolorapi.com/id?hex=ff758c'); const apiData = await apiResponse.json(); console.log(apiData); callback(null, JSON.stringify(apiData)); } catch (err) { console.error(err); callback(err); } };

    2023-03-23 08:36:53
    赞同 展开评论 打赏
问答分类:
问答标签:
相关产品:
Serverless
+关注
快速交付实现商业价值。
热门讨论
热门文章
相关电子书
更多
数据资源的基础设施API总线
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
http://www.vxiaotou.com