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
- Crie um serviço agora para gerenciar uma variável do tipo string.
- 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.