# README
Router Plugin
The router plugin is a HTTP handler plugin for the Micro API which enables you to define routes via go-os/config. This is dynamic configuration that can then be leveraged via anything that implements the go-os/config interface e.g file, etcd, consul or the config service.
Features
- Request Matching
- Weighted Routing
- Reverse Proxying
- Priority Rules
- Configurable via go-os/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/micro/go-plugins/micro/router"
)
func init() {
plugin.Register(router.NewRouter())
}
Config
Configuring the router is done via a go-os/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