pat

package
v0.6.0 Latest Latest
Warning

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

Go to latest
Published: Nov 28, 2015 License: BSD-3-Clause, BSD-3-Clause Imports: 6 Imported by: 0

README

pat

Build Status

Documentation

Overview

Package gorilla/pat is a request router and dispatcher with a pat-like interface. It is an alternative to gorilla/mux that showcases how it can be used as a base for different API flavors. Package pat is documented at:

http://godoc.org/github.com/bmizerany/pat

Let's start registering a couple of URL paths and handlers:

func main() {
	r := pat.New()
	r.Get("/products", ProductsHandler)
	r.Get("/articles", ArticlesHandler)
	r.Get("/", HomeHandler)
	http.Handle("/", r)
}

Here we register three routes mapping URL paths to handlers. This is equivalent to how http.HandleFunc() works: if an incoming GET request matches one of the paths, the corresponding handler is called passing (http.ResponseWriter, *http.Request) as parameters.

Note: gorilla/pat matches path prefixes, so you must register the most specific paths first.

Note: differently from pat, these methods accept a handler function, and not an http.Handler. We think this is shorter and more convenient. To set an http.Handler, use the Add() method.

Paths can have variables. They are defined using the format {name} or {name:pattern}. If a regular expression pattern is not defined, the matched variable will be anything until the next slash. For example:

r := pat.New()
r.Get("/articles/{category}/{id:[0-9]+}", ArticleHandler)
r.Get("/articles/{category}/", ArticlesCategoryHandler)
r.Get("/products/{key}", ProductHandler)

The names are used to create a map of route variables which are stored in the URL query, prefixed by a colon:

category := req.URL.Query().Get(":category")

As in the gorilla/mux package, other matchers can be added to the registered routes and URLs can be reversed as well. To build a URL for a route, first add a name to it:

r.Get("/products/{key}", ProductHandler).Name("product")

Then you can get it using the name and generate a URL:

url, err := r.GetRoute("product").URL("key", "transmogrifier")

...and the result will be a url.URL with the following path:

"/products/transmogrifier"

Check the mux documentation for more details about URL building and extra matchers:

http://gorilla-web.appspot.com/pkg/mux/

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Router

type Router struct {
	mux.Router
}

Router is a request router that implements a pat-like API.

pat docs: http://godoc.org/github.com/bmizerany/pat

func New

func New() *Router

New returns a new router.

func (*Router) Add

func (r *Router) Add(meth, pat string, h http.Handler) *mux.Route

Add registers a pattern with a handler for the given request method.

func (*Router) Delete

func (r *Router) Delete(pat string, h http.HandlerFunc) *mux.Route

Delete registers a pattern with a handler for DELETE requests.

func (*Router) Get

func (r *Router) Get(pat string, h http.HandlerFunc) *mux.Route

Get registers a pattern with a handler for GET requests.

func (*Router) Post

func (r *Router) Post(pat string, h http.HandlerFunc) *mux.Route

Post registers a pattern with a handler for POST requests.

func (*Router) Put

func (r *Router) Put(pat string, h http.HandlerFunc) *mux.Route

Put registers a pattern with a handler for PUT requests.

func (*Router) ServeHTTP

func (r *Router) ServeHTTP(w http.ResponseWriter, req *http.Request)

ServeHTTP dispatches the handler registered in the matched route.

Jump to

Keyboard shortcuts

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