RESTful con Go y MongoDB
Who i am?
John Paul Machahuay Giraldo
Temas
- REST
- RESTful
- github.com/gorilla/mux
- gopkg.in/mgo.v2 (mango)
- Demo
REST
Es un modelo de arquitectura de software vinculado al protocolo HTTP.
Consiste en un conjunto de normas para mejorar la comunicación cliente-servidor.
PRINCIPIOS REST
"Todo es un recurso, representado por un formato".
- Dar a todas las cosas un identificador (URI).
- Use métodos estándar (GET, POST, PUT, DELETE, HEAD, OPTIONS, TRACE, CONNECT).
- Recursos con múltiples representaciones.
- Comunique sin estado (Cada petición del servidor es tratado de modo totalmente independiente).
RESTful
Son los servicios web que siguen los principios REST.
Gorilla web toolkit
Package gorilla/mux
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.
Package gorilla/mux
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)
}
Package gorilla/mux
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)
}
Package gorilla/mux
Y definidos:
{name:pattern}
{name}
Accedemos a ellos en el controlador de la sgte forma:
vars := mux.Vars(request)
category := vars["category"]
Package gorilla/mux
Y así hay muchos "matchers" que puedes ir agregando.
r.HandleFunc("/products", ProductsHandler).
Host("www.domain.com").
Methods("GET").
Schemes("http")
Demo
RESTful with Go and MongoDB
By johnprog
RESTful with Go and MongoDB
In this slide, I'll show you how to work Go with MongoDB.
- 1,142