Mudanças entre as edições de "Go: RESTful - manipulando uma variável"
De Aulas
(2 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]] | ||
Linha 14: | Linha 15: | ||
"net/http" | "net/http" | ||
"strconv" | "strconv" | ||
+ | |||
+ | "github.com/rs/cors" | ||
) | ) | ||
Linha 30: | Linha 33: | ||
}) | }) | ||
− | err := http.ListenAndServe("localhost:8080", | + | // 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
- 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.