首页 > 解决方案 > 如何从服务器端发出 API 请求?

问题描述

我想从 Coinmarketcap API 发出请求。他们不允许使用 CORS 配置,因为安全很重要,选项是通过自己的后端服务路由调用在浏览器中执行。

人们对我说,他们使用了几种免费的无服务器选项,AWS Lambda、Google Cloud Functions、Azure Functions。但我不知道该怎么做,我想知道使用 Aws Lambda,我需要做什么?

那是我的 node.js 代码:



const rp = require('request-promise');
const requestOptions = {
  method: 'GET',
  uri: 'https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest',
  qs: {
    'start': '1',
    'limit': '5000',
    'convert': 'USD'
  },
  headers: {
    'X-CMC_PRO_API_KEY': 'b54bcf4d-1bca-4e8e-9a24-22ff2c3d462c' //that isn't my real api key
  },
  json: true,
  gzip: true
};

rp(requestOptions).then(response => {
  console.log('API call response:', response);
}).catch((err) => {
  console.log('API call error:', err.message);
});

标签: node.jsamazon-web-servicesapi

解决方案


AWS Lambda 函数可以帮助您执行 api 并返回响应。您可能还需要 AWS API Gateway 将 lambda 的响应连接到您的 api。lambda 中的代码如下所示:

const rp = require('request-promise');

exports.handler = async (event) => {
  const requestOptions = {
    method: 'GET',
    uri: 'https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest',
    qs: {
      'start': '1',
      'limit': '5000',
      'convert': 'USD'
    },
    headers: {
      'X-CMC_PRO_API_KEY': 'b54bcf4d-1bca-4e8e-9a24-22ff2c3d462c' //that isn't my real api key
    },
    json: true,
    gzip: true
  };

  const response = rp(requestOptions);
  console.log(response);
  return response;
}

基本上在事件对象中传递输入,然后你可以像普通对象一样使用。另请参阅 - https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-create-api-as-simple-proxy-for-lambda.html


推荐阅读