如何在 Deno 中使用中间件?

阅读时长 5 分钟读完

在 Deno 中使用中间件是非常方便和容易的。中间件是在 HTTP 请求的特定点上执行的函数。Den中间件可以用于在路由之前或之后执行某些任务,如身份验证、日志记录、错误处理等。在这篇文章中,我们将深入探讨如何在 Deno 中使用中间件。

定义中间件

一个中间件实际上是一个函数,它接受一个 Request 和一个 Next 参数。 Request 是一个封装了 HTTP 请求信息的对象,而 Next 则是一个指向下一个中间件的引用。

我们可以使用类似下面的方式定义中间件函数:

在这个示例中,我们只是简单地执行了一些中间件逻辑,然后将请求传递给下一个中间件。

使用中间件

要使用中间件,我们需要创建一个类似如下的 HTTP 服务器:

要使用中间件,我们只需要将中间件函数添加到处理请求时的 for 循环中:

在这个示例中,我们将 handleRequest 函数传递给中间件。它将使用请求执行某些处理,然后返回结果。

中间件执行顺序

中间件的执行顺序由添加的顺序决定。例如,在下面的示例中,middleware1 将在 middleware2 之前执行,因为 middleware1 添加到了 for 循环中的顶部。

示例

下面是一个完整的示例,其中包含两个中间件:

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

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

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

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

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

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

在这个示例中,我们定义了两个中间件:logMiddlewareerrorMiddlewarelogMiddleware 将记录收到的每个请求的 URL,而 errorMiddleware 将捕获任何错误并返回 500 内部服务器错误。

然后,我们定义一个处理函数 handleRequest,它将根据请求返回不同的响应。如果请求是 GET,并且 URL 是 /hello,它将返回 Hello World!。否则,它将返回 404 响应。

最后,我们将中间件添加到 for 循环中,以记录日志和处理错误。我们还将 handleRequest 函数作为中间件参数传递。

结论

在 Deno 中使用中间件是一种在 HTTP 请求的不同阶段进行一些通用处理的好方法。在这篇文章中,我们介绍了如何定义中间件,如何在 HTTP 服务器上使用中间件,以及中间件的执行顺序。我们还演示了一个完整的示例,其中包含两个中间件,以帮助您理解中间件的实际用途。

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

纠错
反馈