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{})
}