Hoy me gustaría poner ante vosotros una manera de realizar microservicios de una manera sencilla y ligera y ya que estamos que nos llegará a los más nostálgicos al corazón :). Aunque seguro que la mayoría de vosotros conocéis Go, el lenguaje de Google que nació en 2007, Go es un lenguaje cuya sintaxis está derivada de C y que añade algunas funcionalidades muy conocidas por los Javeros como pueden ser el recolector de basura, además de permitirnos crear scripts muy consistentes y eficientes.
Para ello hoy os prongo un script de Go que nos permite lanzar un microservicio para tener una lista de notas y tareas para que no olvidemos aquello más importante de nuestro día a día. Por simplificar este servicio solo permitiremos crear nuevas notas y listar aquellas que ya hemos creado.
notes_microservice.go
package main
import (
"encoding/json"
"net/http"
"time"
)
type Note struct {
Id int
Content string
Date time.Time
}
type Message struct {
message string
}
var Notes []Note
func handler(response http.ResponseWriter, request *http.Request) {
switch request.Method {
case "GET":
listNotes(response,request)
case "POST":
createNote(response,request)
default:
returnMessage(response,request,"Method not allowed")
}
}
func main() {
http.HandleFunc("/notes", handler)
http.ListenAndServe(":8080", nil)
}
func createNote (response http.ResponseWriter, request *http.Request) {
note := Note{}
error := json.NewDecoder(request.Body).Decode(¬e)
if error != nil {
panic(error)
}
note.Id = len(Notes);
note.Date = time.Now().Local()
Notes = append(Notes,note)
responseObject, error := json.Marshal(note)
if error != nil {
panic(error)
}
response.Write(responseObject)
}
func listNotes (response http.ResponseWriter, request *http.Request) {
responseObject, error := json.Marshal(Notes)
if error != nil {
panic(error)
}
response.Write(responseObject)
}
func returnMessage (response http.ResponseWriter, request *http.Request, message string) {
m := Message{message}
bodyMessage, error := json.Marshal(m)
if error != nil {
panic(error)
}
response.Write(bodyMessage)
}
Cabe destacar que nuestro microservicio guarda en memoria las notas que vayamos creando. Como buenos Geeks os animo a que utilicéis estás pequeñas directrices para hacer vuestros microservicios utilizando persistencia.
Para arrancar vuestro microservicio solo tenéis que ejecutar la siguiente linea de comandos.
go run notes_microservice.go
Ahora solo tenéis que hacer vuestras peticiones GET (para el listado de notas) y POST (para crear nuevas notas) a localhost:8080/notes. Os dejo algún json de ejemplo para ir creando vuestras primeras notas.
{
"Content" : "Comprar el pan"
}
Espero que os haya sido de ayuda.
Comments