node.js - 如何从服务器端发出 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);
});
解决方案
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
推荐阅读
- docker - 如何使用 Google Cloud Build 从主机访问 Docker 映像中的文件
- javascript - 使用内部数组对数组进行排序
- angular - 将 ng-template 从父级传递给子级
- swift - SwiftUI 中 Shazam 按钮的动画
- javascript - Javascript数组 - 用另一个数组填充缺失的元素
- html - 尝试旋转 SVG 动画时遇到问题
- discord.py - 经济系统问题 discord.py
- google-data-studio - 如何使用计算字段在 Datastudio 中获取上周一和上周日的日期?
- r - ggplot facet grid y轴有些值不可见如何调整网格
- angular - 如果已经有项目,则禁用放置区 - ngx-smooth-dnd