You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Buddy Sandidge 433ea009f3 dep init 7 years ago
..
.travis.yml dep init 7 years ago
LICENSE Add web framework dependencies for pat and negroni 8 years ago
README.md Add web framework dependencies for pat and negroni 8 years ago
doc.go Add web framework dependencies for pat and negroni 8 years ago
pat.go Add web framework dependencies for pat and negroni 8 years ago
pat_test.go dep init 7 years ago

README.md

pat

GoDoc Build Status

How to use?

pat is pretty simple. The documentation lives here.

Install

With a properly configured Go toolchain:

go get github.com/gorilla/pat

Example

Here's an example of a RESTful api:

package main

import (
	"log"
	"net/http"

	"github.com/gorilla/pat"
)

func homeHandler(wr http.ResponseWriter, req *http.Request) {
	wr.WriteHeader(http.StatusOK)
	wr.Write([]byte("Yay! We're home, Jim!"))
}

func getAllTheThings(wr http.ResponseWriter, req *http.Request) {
	wr.WriteHeader(http.StatusOK)
	wr.Write([]byte("Look, Jim! Get all the things!"))
}

func putOneThing(wr http.ResponseWriter, req *http.Request) {
	wr.WriteHeader(http.StatusOK)
	wr.Write([]byte("Look, Jim! Put one thing!"))
}

func deleteOneThing(wr http.ResponseWriter, req *http.Request) {
	wr.WriteHeader(http.StatusOK)
	wr.Write([]byte("Look, Jim! Delete one thing!"))
}

func main() {
    router := pat.New()

	router.Get("/things", getAllTheThings)

    router.Put("/things/{id}", putOneThing)
    router.Delete("/things/{id}", deleteOneThing)

	router.Get("/", homeHandler)

	http.Handle("/", router)

	log.Print("Listening on 127.0.0.1:8000...")
	log.Fatal(http.ListenAndServe(":8000", nil))
}

Notice how the routes descend? That's because Pat will take the first route that matches. For your own testing, take the line router.Get("/", homeHandler) and put it above the other routes and run the example. When you try to curl any of the routes, you'll only get what the homeHandler returns. Design your routes carefully.