package
0.17.1
Repository: https://github.com/protocolone/go-plugins.git
Documentation: pkg.go.dev

# 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

# Functions

No description provided by the author
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