在前端开发过程中,调用 AWS 提供的 REST API 非常常见。在 Node.js 环境中,我们可以使用 AWS SDK for JavaScript 来方便调用 AWS API,不过 AWS SDK for JavaScript 会包含很多底层实现,对于一些只需要特定功能的场景来说,显得比较臃肿。因此,AWS 也提供了一些 protocol 包,其中的 @aws-sdk/protocol-rest 就专门用于调用 AWS REST API。本文将详细介绍如何使用 @aws-sdk/protocol-rest 包来调用 AWS REST API。
安装
@aws-sdk/protocol-rest 是一个 NPM 包,可以通过 NPM 安装:
npm install @aws-sdk/protocol-rest
创建客户端
在 @aws-sdk/protocol-rest 中,我们可以使用 RestClient
类来创建一个调用某个 AWS REST API 的客户端。
const { RestClient } = require("@aws-sdk/protocol-rest"); const client = new RestClient({ endpoint: "{API_URI}", region: "{YOUR_AWS_REGION}" });
上述代码中,我们传入了两个参数:
- endpoint: AWS REST API 的 URI。
- region:AWS 的区域。
创建请求
在创建了客户端之后,我们可以使用客户端对象的 send
方法来发送请求。
const { HttpMessage } = require("@aws-sdk/protocol-http"); const request = new HttpMessage({ method: 'get', path: '/', });
上述代码中,我们创建了一个 HTTP GET 请求,并指定了请求路径。
发送请求
有了客户端对象和请求对象之后,我们就可以使用客户端对象的 send
方法发送请求,并获取到响应。在发送请求之前,我们需要为请求对象设置一个 input
属性,以便将请求参数传递给请求对象。
-- -------------------- ---- ------- ------------- - ----- ----- -------------------- ---------------- -- - --------------------- ------ ----- ------------------------- --------------------- ----- ----------------------------------- -- -------------- -- - --------------------- ----------- ---
在发送请求之后,我们可以通过对响应对象的属性进行访问,来获取到接口的响应状态和返回结果。
示例代码
下面是一个使用 @aws-sdk/protocol-rest 包调用 Amazon S3 存储服务的示例代码:
-- -------------------- ---- ------- ----- - ---------- - - ---------------------------------- ----- - ----------- - - ---------------------------------- ----- ------ - --- ------------ --------- ----------------------------------------- ------- ----------- --- ----- ------- - --- ------------- ------- ------ ----- --- --- -------------------- ---------------- -- - --------------------- ------ ----- ------------------------- --------------------- ----- ----------------------------------- -- -------------- -- - --------------------- ----------- ---
总结
@aws-sdk/protocol-rest 是一个非常实用的 NPM 包,可以方便地调用 AWS REST API。在本文中,我们介绍了如何安装、创建客户端、创建请求和发送请求。希望本文对您理解和使用 @aws-sdk/protocol-rest 包有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5f6eecd2a9b7065299ccba23