怎样使用 Serverless 框架构建无服务器 API

阅读时长 4 分钟读完

在过去,构建一个 Web 应用程序需要租用服务器,并基于服务器运行应用程序代码以响应用户请求。这种方式可能会导致高额的费用和管理成本。

然而,随着 Serverless 技术的出现,我们可以使用 AWS Lambda、Azure Functions、Google Cloud Functions 等无服务器平台构建应用程序并将其发布。无服务器平台提供了以事件和数据为基础的服务,可扩缩应用程序的能力,并大大减少了托管应用程序的复杂性和管理成本。

在这篇文章中,我将向你展示如何使用 Serverless 框架构建无服务器 API。我们将使用一个名为 Serverless Framework 的工具,该工具提供了能够编写,测试和文档化无服务器应用程序的一组工具和函数库。

步骤 1 - 安装 Serverless 框架

首先,让我们安装 Serverless 框架。我们使用 npm 包管理器来将其安装到本地计算机上。在你的命令行终端中,键入以下命令:

,并等待安装完成。

步骤 2 - 创建无服务器应用程序

在我们创建无服务器应用程序之前,让我们简要了解一下 Serverless 框架的定义和组成:

  • Serverless.yml:一个以 YAML 格式编写的配置文件,用于定义应用程序的服务,函数,事件等配置。
  • Handler.js:应用程序的函数文件。
  • Package.json:一个描述应用程序及其依赖项的文件。

现在,请打开终端并键入以下命令:

该命令将为你创建一个名为 my-service 的目录,并下载一个基础模板,设置了一个基本的示例函数。我们将在此基础上构建我们的应用程序。

步骤 3 - 定义应用程序配置

现在,我们已经创建了一个新的 Serverless 服务,我们将使用 Serverless.yml 文件定义应用程序的 API 配置。以下是一个简单的示例配置:

-- -------------------- ---- -------
-------- ----------
---------
  ----- ---
  -------- ----------
----------
  ------
    -------- -------------
    -------
      - -----
          ----- -
          ------- ---

在此配置中,我们指定应用程序的名称,提供商和运行时(在本例中,我们将使用 AWS 提供的 Node.js 12.x 运行时)。我们还定义了一个名为 hello 的函数,并定义了该函数将如何被触发。

这个函数将处理 http get 请求并在其响应中返回一个简单的消息。在我们的目录中,你将找到带有以下内容的 handler.js 文件:

-- -------------------- ---- -------
---- --------

-------------------- - ----- ----- -- -
  ------ -
    ----------- ----
    ----- ---------------
      -
        -------- --- ---------- ----- ---- -------- -------- ---------------
        ------ ------
      --
      -----
      -
    --
  --
--

此函数将返回一个 JSON 对象,其 body 属性中包含了一个 message 字符串和 event 对象。你可以通过将浏览器指向 http://localhost:3000/hello 来测试此函数(在你运行服务之后)。

步骤 4 - 部署应用程序

现在,我们将发布应用程序,使其成为在互联网上可用的 API 服务。

在命令行中,键入以下命令:

该命令将连接你的 AWS 账户并使用 CloudFormation 创建必要的资源来部署我们的应用程序。当它完成之后,输出中将显示一个 URL,该 URL 表示我们刚刚发布的 API。

尝试在浏览器中打开您的新 URL!你应该可以看到你的 Serverless 应用程序返回的响应,以及任何在函数中定义的消息。

结论

在本文中,你学会了如何使用 AWS 和 Serverless 框架创建无服务器 API。每一步都有详细的解释和示例代码。如果你想学习更多关于 Serverless 和无服务器计算的话,我建议阅读 AWS、Microsoft Azure 和 Google Cloud 的文档。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6712470ead1e889fe203d92c

纠错
反馈