npm 包 azure-common-fwd 使用教程

阅读时长 10 分钟读完

介绍

azure-common-fwd 是一个用于 Azure Functions 的 npm 包,它提供了一个集成了常见中间件的 Express 应用程序,并基于此应用程序实现快速、简单的 Azure Functions 开发和部署。这个包包含了以下特性:

  • 用于跨域资源共享(CORS)的中间件
  • 用于解析 JSON 数据的中间件
  • 用于解析 URL 编码数据的中间件
  • 用于处理网站 favicon 的中间件
  • 用于处理静态文件的中间件
  • 用于设置 Express 应用程序的基本路由的函数

本篇文章将详细介绍 azure-common-fwd 的使用方法,包括安装、初始化、使用等,以帮助开发者快速上手使用这个 npm 包。

安装

在使用 azure-common-fwd 之前,你需要先安装 Node.js 和 npm 工具。然后,通过在终端中执行以下命令来安装 azure-common-fwd:

初始化

在安装完 azure-common-fwd 后,你需要将其引入到你的代码中。假设你已经创建了一个 Azure Functions 项目,你可以在你的入口文件(通常为 index.js 或者 server.js)中引入 azure-common-fwd:

然后,你需要创建一个 Express 应用程序。这个应用程序可以包含任何你需要用到的中间件和路由。在创建 Express 应用程序后,你需要将其传递给 createAzureFunctionHandler 方法,并将返回的函数作为 Azure Function 的处理程序。

让我们看一个例子,假设你有一个简单的 Express 应用程序,它监听 /hello 路由,并返回一条 Hello World 消息:

现在,你可以将这个应用程序传递给 createAzureFunctionHandler 方法,并将返回的函数作为 Azure Function 的处理程序:

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

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

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

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

现在,你已经成功将 Express 应用程序与 Azure Functions 集成了起来。如果你部署这个代码到 Azure Functions 中,那么你可以通过访问你的函数 URL(比如 https://yourfunction.azurewebsites.net/api/hello)来测试这个应用程序。

使用

azure-common-fwd 提供了几个有用的工具和函数,以帮助你更方便地构建 Azure Functions。接下来,我们将介绍这些用法。

使用内置的中间件

azure-common-fwd 自带了几个常用的 Express 中间件,可以让你更轻松地构建应用程序。你可以通过以下方式启用这些中间件:

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

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

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

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

说明:

  • express.json() 中间件用于解析 JSON 格式的请求体。使用该中间件后,你就可以通过 req.body 属性来访问请求体中的 JSON 数据了。
  • express.urlencoded() 中间件用于解析 URL 编码格式的请求体。使用该中间件后,你就可以通过 req.body 来访问请求体中的 URL 编码数据了。
  • express.static() 中间件用于提供静态文件服务。通过传递一个文件夹路径(这里是 public),你可以将该文件夹中的所有文件和子目录都映射为静态文件服务。

使用 cors 中间件

跨域资源共享(CORS)是一种机制,它使用额外的 HTTP 头来告诉浏览器,让运行在一个 origin(域名,协议和端口)上的 web 应用程序被准许访问来自不同源服务器上的指定资源。azure-common-fwd 提供了一个用于处理 CORS 的中间件,帮助你更方便地处理跨域请求。

你可以通过以下方式启用 cors 中间件:

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

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

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

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

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

使用 cors 中间件后,你需要传递一个选项对象(这里是 corsOptions)。这个对象包含了以下属性:

  • origin: String | Function(默认值:*)- 一个表示哪些 origins(域名、协议和端口)是允许访问资源的字符串或一个返回字符串的函数。
  • optionsSuccessStatus: Number(默认值:204)- 一个表示 preflight 请求成功的 HTTP 状态码。

自定义路由前缀

在 Azure Functions 中,所有的 HTTP 请求都会被路由至同一个函数。为了区分不同的请求,你需要在代码中手动识别请求的 URL,并作出相应的响应。

azure-common-fwd 提供了一个 createRouter 方法,它可以帮助你更方便地处理路由。这个方法会创建一个 Express 路由器,你可以将其添加到你的应用程序中。

你可以通过以下方式创建一个基于 /api 前缀的 Express 路由器:

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

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

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

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

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

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

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

在这个例子中,我们首先创建了一个 Express 路由器,并添加了两个路由/Hello 和 /Hello。然后,我们使用 app.use('/api', router) 将路由器挂载到了 /api 前缀下。

这样,当请求 /api/hello 或者 /api/hello 时,它们都会被路由至路由器中去,最后得到相应的响应。

手动解析请求体

在某些情况下,你可能需要手动解析请求体,而不是使用 express.json() 或者 express.urlencoded() 中间件。你可以使用 azure-common-fwd 提供的 bodyParser 方法来手动解析请求体。

在下面的例子中,我们手动解析了一个 JSON 格式的请求体,并将结果保存在 req.body 中:

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

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

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

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

在这个例子中,我们首先定义了一个 /hello 路由,并使用 bodyParser.json() 手动解析了该请求的 JSON 格式的请求体并存放在 req.body 中。

手动解析请求体的方式可能有些繁琐,但是它可以让你更灵活地处理各种类型的请求。

结论

通过本文,你已经学会了通过使用 azure-common-fwd npm 包来构建 Azure Functions 应用程序的基本方法。在实际项目中,你可以根据自己的需求来使用这些工具和函数,以帮助你更方便地开发和部署 Azure Functions。

示例代码:

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

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

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

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

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

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

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

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

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

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

纠错
反馈