Go: RESTful - manipulando uma variável

De Aulas
Revisão de 12h01min de 1 de março de 2024 por Admin (discussão | contribs)

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"
)

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)
	})

	err := http.ListenAndServe("localhost:8080", router)
	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.
  2. Agora crie um método delete para resetar a informação. Se for inteiro, fica zero, se for string, fica uma string vazia.