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,123