package
1.5.5
Repository: https://github.com/gotoblink/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 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

# 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