📜  路由资源 adonis 中间件 - TypeScript (1)

📅  最后修改于: 2023-12-03 15:28:14.728000             🧑  作者: Mango

路由资源 Adonis 中间件 - TypeScript

AdonisJS 是一个基于 Node.js 平台的 MVC 框架,该框架提供强大的路由系统以及灵活的中间件,可以帮助我们更好地组织应用程序代码并提高代码的重用性。

在 AdonisJS 中,路由是资源的核心定义,根据 HTTP 请求 URL 模式匹配的路由将从工厂应用程序控制器中实例化,这样我们便可通过路由访问应用程序带有命名规范的资源。

Typescript 中间件

Typescript 是一种 JavaScript 的超集,可以使我们在开发大型应用程序时获得更好的类型检查和更好的开发工具支持。在 AdonisJS 中,我们可以使用 Typescript 编写路由,控制器以及中间件等各种应用程序代码逻辑。

以下是一个简单的 AdonisJS 控制器和路由示例,其中包含一个基于 Typescript 实现的中间件:

// app/Controllers/Http/UserController.ts
import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'

export default class UserController {
  public async index ({ view }: HttpContextContract) {
    return view.render('users')
  }
}

// start/routes.ts
import Route from '@ioc:Adonis/Core/Route'
import UserController from 'App/Controllers/Http/UserController'

Route.get('users', 'UserController.index').middleware('auth')

其中 auth 是 AdonisJS 内置的身份验证中间件,用于检查用户的登录状态。我们可以通过路由配置指定多个中间件作为 AdonisJS 路由的一部分。

创建 AdonisJS 中间件

要创建 AdonisJS 中间件,我们需要使用框架的 make:middleware 命令、创建新的 Typescript 类文件,并内置一个处理逻辑:

node ace make:middleware LogMiddleware
// app/Middleware/LogMiddleware.ts
import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'

export default class LogMiddleware {
  public async handle ({ request }: HttpContextContract, next: () => Promise<void>) {
    console.log(`Handling ${request.method()} request for ${request.url()}`)
    await next()
  }
}
使用中间件

要使用 AdonisJS 中间件,我们必须指定要在特定路由或控制器中使用的中间件。可以将字符串或数组作为中间件参数传递,并使我们可以为每个路由配置多个中间件处理程序。

// start/routes.ts
import Route from '@ioc:Adonis/Core/Route'
import UserController from 'App/Controllers/Http/UserController'
import LogMiddleware from 'App/Middleware/LogMiddleware'

Route.get('users', 'UserController.index').middleware(['auth', LogMiddleware])
总结

AdonisJS 中的路由资源和中间件是令人难以置信的强大,允许我们轻松地设置复杂的应用程序系统并使系统具有扩展性和更好的复用性。 强烈建议您尝试 AdonisJS 框架,并充分利用 Typescript 中的所有技能和工具来提高生产力和开发体验。