Mudanças entre as edições de "Go: RESTful - manipulando uma variável"

De Aulas
(Criou página com 'Afluentes: Sistemas Distribuídos e Mobile = Manipulando uma variável = Agora temos um exemplo um pouquinho mais complexo. Criamos uma variável chamada <code>number</c...')
 
 
(4 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 1: Linha 1:
 +
 
Afluentes: [[Sistemas Distribuídos e Mobile]]
 
Afluentes: [[Sistemas Distribuídos e Mobile]]
  
 
= Manipulando uma variável =
 
= Manipulando uma variável =
  
Agora temos um exemplo um pouquinho mais complexo. Criamos uma variável chamada <code>number</code> e vamos usar as chamadas do serviço pelo método <code>GET</code> para retornar o valor e pelo método <code>PATCH<code> para alterar o valor.
+
Agora temos um exemplo um pouquinho mais complexo. Criamos uma variável chamada <code>number</code> e vamos usar as chamadas do serviço pelo método <code>GET</code> para retornar o valor e pelo método <code>PATCH</code> para alterar o valor.
  
 
Veja que o <code>GET</code> é igual o do nosso exemplo Hello World. Mas o <code>PATCH</code> eu envio uma informação na chamada, que é o novo número.
 
Veja que o <code>GET</code> é igual o do nosso exemplo Hello World. Mas o <code>PATCH</code> eu envio uma informação na chamada, que é o novo número.
Linha 14: Linha 15:
 
"net/http"
 
"net/http"
 
"strconv"
 
"strconv"
 +
 +
"github.com/rs/cors"
 
)
 
)
  
Linha 30: Linha 33:
 
})
 
})
  
err := http.ListenAndServe("localhost:8080", router)
+
// Liberamos o CORS
 +
c := cors.AllowAll()
 +
r := c.Handler(router)
 +
 
 +
err := http.ListenAndServe("localhost:8080", r)
 
if err != nil {
 
if err != nil {
 
fmt.Println(err.Error())
 
fmt.Println(err.Error())
 
}
 
}
 
}
 
}
</syntaxhighlight>
+
</syntaxhighlight>'''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.

Edição atual tal como às 19h17min de 10 de junho de 2024

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.