John Paul Machahuay Giraldo
Es un modelo de arquitectura de software vinculado al protocolo HTTP.
Consiste en un conjunto de normas para mejorar la comunicación cliente-servidor.
"Todo es un recurso, representado por un formato".
Son los servicios web que siguen los principios REST.
Package gorilla/mux implements a request router and dispatcher.
mux.Router compara las solicitudes entrantes con una lista de rutas registradas, si la ruta que coincida con el URL, entonces se llama a su controlador (handler) respectivo.
Registrando urls con sus respectivos handlers.
func main() {
r := mux.NewRouter()
r.HandleFunc("/", HomeHandler)
r.HandleFunc("/products", ProductsHandler)
r.HandleFunc("/articles", ArticlesHandler)
http.Handle("/", r)
}
Las rutas pueden tener variables:
func main() {
r := mux.NewRouter()
r.HandleFunc("/products/{key}", ProductHandler)
r.HandleFunc("/articles/{category}/", ArticlesCategoryHandler)
r.HandleFunc("/articles/{category}/{id:[0-9]+}", ArticleHandler)
http.Handle("/", r)
}
Y definidos:
{name:pattern}
{name}
Accedemos a ellos en el controlador de la sgte forma:
vars := mux.Vars(request)
category := vars["category"]
Y así hay muchos "matchers" que puedes ir agregando.
r.HandleFunc("/products", ProductsHandler).
Host("www.domain.com").
Methods("GET").
Schemes("http")
Demo