RapidGo
No results found

Plugins

Extend the framework with a composable plugin architecture.

The plugin system lets you package reusable functionality as self-contained modules.

Plugin Interface

type Plugin interface {
    Name() string
    Register(c *container.Container)
    Boot(c *container.Container)
    Routes(r *router.Router)
}

Creating a Plugin

package myplugin

import (
    "github.com/RAiWorks/RapidGo/v2/core/container"
    "github.com/RAiWorks/RapidGo/v2/core/router"
)

type MyPlugin struct{}

func (p *MyPlugin) Name() string { return "myplugin" }

func (p *MyPlugin) Register(c *container.Container) {
    // Bind plugin services
}

func (p *MyPlugin) Boot(c *container.Container) {
    // Initialize plugin
}

func (p *MyPlugin) Routes(r *router.Router) {
    r.Get("/my-plugin", myHandler)
}

Registering Plugins

In your app/plugins.go:

package app

import "github.com/RAiWorks/RapidGo/v2/core/plugin"

func RegisterPlugins(mgr *plugin.Manager) {
    mgr.Register(&myplugin.MyPlugin{})
}