# README
Router Plugin
The router plugin is a HTTP handler plugin for the Micro API which enables you to define routes via Go Config. This is dynamic configuration that can then be leveraged via anything that implements the go-config interface e.g file, etcd, consul or the config service.
Features
- Request Matching
- Weighted Routing
- Reverse Proxying
- Priority Rules
- Configurable via Go Config
- Pluggable via micro/plugins
TODO
- Regex Matching Host/Path
Usage
Register the plugin before building Micro
package main
import (
"github.com/micro/micro/plugin"
"github.com/gotoblink/go-plugins/micro/router"
)
func init() {
plugin.Register(router.NewRouter())
}
Config
Configuring the router is done via a go-Config source. Here's an example using the File source.
// Create Config Source
f := file.NewSource(
// Use routes.json file
config.SourceName("routes.json"),
)
// Create Config
c := config.NewConfig(
// With Source
config.WithSource(f),
)
// Create Router
r := router.NewRouter(
// With Config
router.Config(c),
)
Routes
Routes are used to config request to match and the response to return. Here's an example.
{
"api": {
"routes": [
{
"request": {
"method": "GET",
"host": "127.0.0.1:10001",
"path": "/"
},
"response": {
"status_code": 302,
"header": {
"location": "http://example.com"
}
},
"weight": 1.0
},
{
"request": {
"method": "POST",
"host": "127.0.0.1:10001",
"path": "/foo"
},
"response": {
"status_code": 301,
"header": {
"location": "http://foo.bar.com"
}
},
"weight": 1.0
}
]
}
}
# Packages
No description provided by the author
# Variables
Default config source file.
No description provided by the author
No description provided by the author
# Structs
No description provided by the author
Request describes the expected request and will attempt to match all fields specified.
Response is put into the http.Response for a Request.
Route describes a single route which is matched on Request and if so, will return the Response.
Routes is the config expected to be loaded.
No description provided by the author
# Type aliases
No description provided by the author