Go: RESTful - manipulando uma variável

De Aulas

Afluentes: Sistemas Distribuídos e Mobile

Manipulando uma variável

Agora temos um exemplo um pouquinho mais complexo. Criamos uma variável chamada number e vamos usar as chamadas do serviço pelo método GET para retornar o valor e pelo método PATCH para alterar o valor.

Veja que o GET é igual o do nosso exemplo Hello World. Mas o PATCH eu envio uma informação na chamada, que é o novo número.

package main

import (
	"fmt"
	"net/http"
	"strconv"

	"github.com/rs/cors"
)

func main() {
	number := 0

	router := http.NewServeMux()

	router.HandleFunc("GET /number", func(w http.ResponseWriter, r *http.Request) {
		fmt.Fprintf(w, "%s", strconv.Itoa(number))
	})

	router.HandleFunc("PATCH /number/{num}", func(w http.ResponseWriter, r *http.Request) {
		number, _ = strconv.Atoi(r.PathValue("num"))
		fmt.Fprintf(w, "number updated to %d", number)
	})

	// Liberamos o CORS
	c := cors.AllowAll()
	r := c.Handler(router)

	err := http.ListenAndServe("localhost:8080", r)
	if err != nil {
		fmt.Println(err.Error())
	}
}

Observação: Veja que esse exemplo é apenas uma demonstração para aula. A variável ela só é mantida enquanto o serviço está sendo executado. Caso ele seja reinicializado, a informação atualizada é perdida. Para que isso não aconteça, temos que armazenar em arquivo ou banco de dados. Veremos isso mais a frente.

Atividade

  1. Crie um serviço agora para gerenciar uma variável do tipo string.
  2. Agora crie um método delete para resetar a informação. Se você trabalhar com o exemplo acima, a variável é inteiro, então fica zero, se for no exercício 1 com strings, então a string fica vazia.