📰
imarket校园集市
  • Welcome
  • Introduce(简介)
  • Getting Started
    • Quickstart(快速开始)
  • API
    • 安全认证
    • Auth(认证与授权)
    • Account(账户管理)
    • Admin(管理员功能)
    • Post(帖子管理)
    • User(用户相关)
    • Comments(评论管理)
    • Message(站内消息)
    • Image(图片管理)
    • Search(搜索功能)
  • Plugin
    • Introduce(插件系统简介)
    • Start(快速上手)
    • Dependency Injection(依赖注入)
    • API (状态接口)
  • Database
    • Tables(数据库表结构)
    • create_tables_script(数据库创建脚本)
Powered by GitBook
On this page
  • 概述
  • 插件管理器 (PluginManager)
  • 插件接口 (IPluginInterceptor)
  1. Plugin

Introduce(插件系统简介)

概述

本后端系统提供了一个插件系统,允许开发者通过实现 IPluginInterceptor 接口来扩展系统的行为。插件可以在请求执行前后进行拦截,并执行自定义逻辑。插件管理器 (PluginManager) 负责加载、管理和执行这些插件。

插件管理器 (PluginManager)

PluginManager 是插件功能的核心类,负责加载插件、管理插件实例以及执行插件的拦截逻辑。

主要功能

  1. 加载插件:PluginManager 会扫描指定目录下的插件,并加载所有实现了 IPluginInterceptor 接口的类。

  2. 插件拦截:插件可以在请求执行前后进行拦截,执行自定义逻辑。

  3. 插件信息管理:每个插件可以附带元数据(如名称、描述、作者等),PluginManager 会记录这些信息并提供查询接口。

主要方法

  • GetPluginDirectory(): 获取插件目录列表。

  • LoadPlugins(IServiceCollection services): 加载插件并将其注册到依赖注入容器中。

  • GetLoadedPlugins(): 获取已加载插件的元数据。

  • ExecuteBeforeAsync(string route, object?[] args, string? username = null): 在请求执行前调用插件的 OnBeforeExecutionAsync 方法。

  • ExecuteAfterAsync(string route, object? result, string? username = null): 在请求执行后调用插件的 OnAfterExecutionAsync 方法。

  • RegisterPluginRoutes(IEndpointRouteBuilder endpoints): 注册路由

插件接口 (IPluginInterceptor)

IPluginInterceptor 是插件必须实现的接口,定义了插件在请求执行前后可以执行的操作。

方法

  • OnBeforeExecutionAsync(string route, object?[] args, string? username = null): 在请求执行前调用,可以修改请求参数或阻止请求继续执行。

  • OnAfterExecutionAsync(string route, object? result, string? username = null): 在请求执行后调用,可以修改返回结果或执行其他操作。

  • RegisterRoutes(IEndpointRouteBuilder endpoints) :在程序启动时调用,用于注册路由

PreviousSearch(搜索功能)NextStart(快速上手)

Last updated 3 months ago