ldl-framework/http-router

LDL HTTP 路由器

dev-master 2022-04-28 13:39 UTC

README

#LDL Http Router

基于 phroute 的路由器(目前如此)

LDL Http Router 是一种 URL 路由器,它使用责任链模式处理预、主和后分发器。

单个 "控制器"(分发器)

路由由一个主分发器类组成,该类(理想情况下)包含一个分发方法(以及通过 __construct 或其他方法注入的所需依赖)。

通过只有一个具有分发方法的单个控制器类,可以将所有其他逻辑(例如用户验证或其他预条件)简化为单个预分发器,并在其他路由之间重用。

响应解析器

路由分发器返回数据,就像任何常规 PHP 方法一样,并且不允许修改响应体。为此,存在路由分发器,它们基本上接受来自请求的所有数据(预、主和后分发器),并将其转换为字符串表示。

默认情况下,此路由器专注于 REST 类型响应,因此整个路由的结果将被 JSON 编码,但也可以提供其他类型的响应,例如使用纯 HTML。

如果您需要任何类型的模板,请参阅 模板响应解析器插件,此插件可以使您使用任何想要的模板引擎。

预和后分发器

这些是在主分发器执行之前(预)或之后(后)执行的操作。

预和后分发器可以在以下位置指定:

  • 路由器级别(所有路由都将应用指定的预和后分发器)
  • 路由级别(只有一个或多个路由实现某些预和后分发处理程序)

所有预和后分发器都是中间件链集合的一部分,此集合中的每个元素都有

  • 一个命名空间和一个名称,考虑到这一点,没有分发器在 HTTP 响应中与其他分发器竞争
  • 一个优先级,它确定了中间件链的执行顺序
  • 一个活动标志,用于启用或禁用分发器

异常处理程序

当从任何类型的分发器(无论是预、主还是后)抛出异常时,将使用异常处理程序,开发者可以处理抛出的特定类型的异常,并能够提供适当的 HTTP 响应代码,同时执行其他操作,例如错误记录等。

如果抛出没有异常处理程序的异常,则异常将像预期的那样引发致命错误。

异常处理程序还可以在以下位置应用:

  • 路由器级别(例如,当找不到路由时)
  • 路由级别(例如,当您想在单个路由上处理自定义异常时)

路由配置文件

您可以手动将任何路由添加到路由器对象,但是不建议这样做。为此,您可以使用带有自己的路由定义的 routes.json 配置文件。

查看此示例了解如何在 JSON 配置文件中定义路由

有用的插件

示例

请确保检查示例文件夹中的示例

待办事项

  • 添加其他配置文件解析器,例如 YML 或 XML
  • 添加有关 routes.json 的更多文档

错误

如果您想报告错误,请在此处打开我们的 GitHub 页面的一个问题