chain

package module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 7, 2018 License: MIT Imports: 1 Imported by: 0

README

middleware chain

GoDoc Build Status Coverage Status Go Report Card

A simple http middleware chain implement.

Godoc

Usage

package main

import (
	"github.com/gookit/chain"
	"net/http"
	"testing"
)

func main() {
	middleware0 := func(h http.Handler) http.Handler {
		return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
			w.Write([]byte("a"))
			h.ServeHTTP(w, r)
			w.Write([]byte("A"))
		})
	}
	middleware1 := func(h http.Handler) http.Handler {
		return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
			w.Write([]byte("b"))
			h.ServeHTTP(w, r)
			w.Write([]byte("B"))
		})
	}

	c := chain.New(middleware0, middleware1)

	c.Use(func(h http.Handler) http.Handler {
		return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
			w.Write([]byte("c"))
			h.ServeHTTP(w, r)
			w.Write([]byte("C"))
		})
	})

	h := c.Wrap(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		w.Write([]byte("-(CORE)-"))
		w.WriteHeader(200)
	}))
 
	http.ListenAndServe(":8090", h)
	// Output: abc-(CORE)-CBA
}

License

MIT

Documentation

Overview

Package chain is a simple http middleware chain implement.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Chain

type Chain []Middleware

Chain middleware chains

func New

func New(chain ...Middleware) Chain

New a middleware chain. Usage:

c := chain.New(middleware0, middleware1)
myHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
	w.Write([]byte("hello"))
	w.WriteHeader(200)
})
handler := c.Wrap(myHandler)
http.ListenAndServe(":8080", handler)

func (Chain) Extend

func (c Chain) Extend(mds ...Middleware) Chain

Extend old chain, returns new chain

func (*Chain) Use

func (c *Chain) Use(mds ...Middleware) Chain

Use more middleware

func (Chain) Wrap

func (c Chain) Wrap(h http.Handler) http.Handler

Wrap all middleware to the core http handler

func (Chain) WrapFunc

func (c Chain) WrapFunc(fn http.HandlerFunc) http.Handler

WrapFunc all middleware to the core http handler func

type Middleware

type Middleware func(h http.Handler) http.Handler

Middleware definition

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL