Skip to content
This repository has been archived by the owner on May 25, 2022. It is now read-only.
/ httptools Public archive
forked from surma/httptools

Augmenting the basic net/http package with functionality found in web frameworks without breaking the original API.

License

Notifications You must be signed in to change notification settings

aboutsource/httptools

 
 

Repository files navigation

Package httptools tries to augment the basic net/http package with functionality found in webframeworks without breaking the original API.

For details and examples, please see the documentation.

Build Status

Contrived example

r := httptools.NewRegexpSwitch(map[string]http.Handler{
	"/people/(.+)": httptools.L{
		httptools.SilentHandler(AuthenticationHandler),
		httptools.MethodSwitch{
			"GET": ListPeople,
			"PUT": http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
				vars := w.(httptools.VarsResponseWriter).Vars()
				AddNewPerson(vars["1"])
			})
		},
		SaveSessionHandler,
	},
	"/.+": http.FileServer(http.Dir("./static")),
})
http.ListenAndServe("localhost:8080", r)

Tools

httptools provides the following tools:

Handler list

Define a sequence of http.Handler. One will be executed after another. A customized http.ResponseWriter allows the passing of data in between handlers.

Silent handler

If a silent handler produces output, it is assumed to be an error. If the silent handler is in a handler list, the execution of the list will be aborted.

Switches

Method switch

Dispatch requests to different handlers according the the HTTP verb used in the request.

RegexpSwitch

Dispatch requests to different handlers according to regexps being matched agains the request path.

HostnameSwitch

Dispatch requests to different handlers according to the hostname used in the request.

Mounts

Dispatch requests to different handlers according to path prefixes. The path prefix will be stripped from the request before being passed to the handler.


Version 1.2.1

About

Augmenting the basic net/http package with functionality found in web frameworks without breaking the original API.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 100.0%