httprouter

package
v0.4.0 Latest Latest
Warning

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

Go to latest
Published: Oct 11, 2018 License: Apache-2.0 Imports: 3 Imported by: 0

Documentation

Overview

Package httprouter is a helper package to get a httprouter compatible handler/middleware from the standatd net/http Middleware factory (from github.com/slok/go-prometheus-middleware).

Example (HttprouterMiddlewareByHandler)

HTTPRouterMiddlewareByHandler shows how you would create a default middleware factory and use it to create a httprouter compatible middleware setting by handler instead of main router.

package main

import (
	"log"
	"net/http"

	"github.com/julienschmidt/httprouter"
	"github.com/prometheus/client_golang/prometheus/promhttp"

	prommiddleware "github.com/slok/go-prometheus-middleware"

	promhttprouter "github.com/slok/go-prometheus-middleware/httprouter"
)

func main() {
	// Create our handler.
	myHandler := func(w http.ResponseWriter, r *http.Request, p httprouter.Params) {
		id := p.ByName("id")
		w.WriteHeader(http.StatusOK)
		w.Write([]byte("hello world! " + id))
	}

	// Create our router.
	r := httprouter.New()

	// Create our middleware factory with the default settings.
	mdlw := prommiddleware.NewDefault()
	// Add the middleware.
	r.GET("/test/:id", promhttprouter.Handler("/test/:id", myHandler, mdlw))
	r.GET("/test2/:id", promhttprouter.Handler("/test2/:id", myHandler, mdlw))

	// Serve metrics from the default prometheus registry.
	log.Printf("serving metrics at: %s", ":8081")
	go http.ListenAndServe(":8081", promhttp.Handler())

	// Serve our handler.
	log.Printf("listening at: %s", ":8080")
	if err := http.ListenAndServe(":8080", r); err != nil {
		log.Panicf("error while serving: %s", err)
	}
}
Output:

Example (HttprouterMiddlewareOnRouter)

HTTPRouterMiddlewareOnRouter shows how you would create a default middleware factory and use it to wrapon httprouter Router (that satisfies http.Handler interface).

package main

import (
	"log"
	"net/http"

	"github.com/julienschmidt/httprouter"
	"github.com/prometheus/client_golang/prometheus/promhttp"

	prommiddleware "github.com/slok/go-prometheus-middleware"
)

func main() {
	// Create our handler.
	myHandler := func(w http.ResponseWriter, r *http.Request, p httprouter.Params) {
		id := p.ByName("id")
		w.WriteHeader(http.StatusOK)
		w.Write([]byte("hello world! " + id))
	}

	// Create our router and add the middleware.
	r := httprouter.New()

	// Create our middleware factory with the default settings.
	mdlw := prommiddleware.NewDefault()

	r.GET("/test/:id", myHandler)
	r.GET("/test2/:id", myHandler)

	// Serve metrics from the default prometheus registry.
	log.Printf("serving metrics at: %s", ":8081")
	go http.ListenAndServe(":8081", promhttp.Handler())

	// Wrap the router with the middleware.
	h := mdlw.Handler("", r)

	// Serve our handler.
	log.Printf("listening at: %s", ":8080")
	if err := http.ListenAndServe(":8080", h); err != nil {
		log.Panicf("error while serving: %s", err)
	}
}
Output:

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func Handler

Handler returns a httprouter.Handler compatible middleware from a Middleware factory instance. The first handlerID argument is the same argument passed on Middleware.Handler method. The second argument is the handler that wants to be wrapped.

Types

This section is empty.

Jump to

Keyboard shortcuts

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