Mudanças entre as edições de "Go: RESTful - Hello World!"

De Aulas
(Criou página com '{{Special:Allpages}} Teste')
 
Linha 1: Linha 1:
{{Special:Allpages}}
+
= Exemplo Hello World! =
  
Teste
+
A linguagem Go trouxe, a partir da versão 1.22, algumas ferramentas para tratar com protocolos http e serviços na própria biblioteca padrão <code>net/http</code>. Para iniciar nosso servidor, usaremos o seguinte comando:
 +
 
 +
<syntaxhighlight lang=go>
 +
router := http.NewServeMux()
 +
</syntaxhighlight>
 +
 
 +
E apenas após criar as funções que fazem o tratamento de todos os métodos que vamos precisar, colocaremos nosso servidor no modo ''listen''. Ou seja, ele vai começar a ouvir uma porta do computador, aguardando uma conexão para então responder à requisição.
 +
 
 +
O comando listen é segue conforme o exemplo abaixo:
 +
 
 +
<syntaxhighlight lang=go>
 +
err := http.ListenAndServe("localhost:8080", router)
 +
if err != nil {
 +
fmt.Println(err.Error())
 +
}
 +
</syntaxhighlight>
 +
 
 +
Veja que ele retorna se teve erro ou não. Caso o <code>err</code> seja <code>nil</code> não ouve erro, caso contrário algo não funcionou direito e, no exemplo, ele imprime a mensagem de erro na execução do servidor.
 +
 
 +
No nosso exemplo, estamos usando a porta <code>8080</code> do <code>localhost</code>
 +
 
 +
== Tratando os Métodos ==
 +
 
 +
Para tratar os métodos web, conforme vistos na aula de [https://saulo.arisa.com.br/wiki/index.php/Elementos_e_Protocolos_da_World_Wide_Web#M.C3.A9todos Elementos e Protocolos da Web] vamos usar a função <code>HandleFunc</code>. Nessa função a gente ou linka uma função ao Handler ou criamos uma função anônima, conforme no exemplo abaixo.
 +
 
 +
<syntaxhighlight lang=go>
 +
router.HandleFunc("GET /hello", func(w http.ResponseWriter, r *http.Request) {
 +
fmt.Fprintf(w, "Hello go REST world!")
 +
})
 +
</syntaxhighlight>
 +
 
 +
Veja que no primeiro parâmetro da função <code>HandleFunc</code> a gente coloca o MÉTODO que quer tratar, um espaço em branco e então a chamada.
 +
 
 +
<pre>
 +
GET /hello
 +
</pre>
 +
 
 +
O segundo parâmetro é a função anônima que estamos criando. Caso você queira criar uma função para tratar o método, basta colocar no nome dela nesse parâmetro, conforme exemplo abaixo:
 +
 
 +
<syntaxhighlight lang=go>
 +
router.HandleFunc("GET /hello", minhaFuncaoHelloWorld)
 +
</syntaxhighlight>
 +
 
 +
Para consumir esse método você pode usar o '''Thunder Client''' do Visual Studio Code, ou o '''Postman''' ou algum outro programa para testar os serviços web. No caso do serviço que criamos, você usa:
 +
 
 +
Método: <code>GET</code>
 +
Chamada: <code>http://localhost:8080/hello</code>
 +
 
 +
== Exemplo Completo ==
 +
 
 +
<syntaxhighlight lang=go>
 +
package main
 +
 
 +
import (
 +
"fmt"
 +
"net/http"
 +
)
 +
 
 +
func main() {
 +
router := http.NewServeMux()
 +
 
 +
router.HandleFunc("GET /hello", func(w http.ResponseWriter, r *http.Request) {
 +
fmt.Fprintf(w, "Hello go REST world!")
 +
})
 +
 
 +
err := http.ListenAndServe("localhost:8080", router)
 +
if err != nil {
 +
fmt.Println(err.Error())
 +
}
 +
}
 +
</syntaxhighlight>

Edição das 11h19min de 1 de março de 2024

Exemplo Hello World!

A linguagem Go trouxe, a partir da versão 1.22, algumas ferramentas para tratar com protocolos http e serviços na própria biblioteca padrão net/http. Para iniciar nosso servidor, usaremos o seguinte comando:

router := http.NewServeMux()

E apenas após criar as funções que fazem o tratamento de todos os métodos que vamos precisar, colocaremos nosso servidor no modo listen. Ou seja, ele vai começar a ouvir uma porta do computador, aguardando uma conexão para então responder à requisição.

O comando listen é segue conforme o exemplo abaixo:

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

Veja que ele retorna se teve erro ou não. Caso o err seja nil não ouve erro, caso contrário algo não funcionou direito e, no exemplo, ele imprime a mensagem de erro na execução do servidor.

No nosso exemplo, estamos usando a porta 8080 do localhost

Tratando os Métodos

Para tratar os métodos web, conforme vistos na aula de Elementos e Protocolos da Web vamos usar a função HandleFunc. Nessa função a gente ou linka uma função ao Handler ou criamos uma função anônima, conforme no exemplo abaixo.

router.HandleFunc("GET /hello", func(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintf(w, "Hello go REST world!")
})

Veja que no primeiro parâmetro da função HandleFunc a gente coloca o MÉTODO que quer tratar, um espaço em branco e então a chamada.

GET /hello

O segundo parâmetro é a função anônima que estamos criando. Caso você queira criar uma função para tratar o método, basta colocar no nome dela nesse parâmetro, conforme exemplo abaixo:

router.HandleFunc("GET /hello", minhaFuncaoHelloWorld)

Para consumir esse método você pode usar o Thunder Client do Visual Studio Code, ou o Postman ou algum outro programa para testar os serviços web. No caso do serviço que criamos, você usa:

Método: GET Chamada: http://localhost:8080/hello

Exemplo Completo

package main

import (
	"fmt"
	"net/http"
)

func main() {
	router := http.NewServeMux()

	router.HandleFunc("GET /hello", func(w http.ResponseWriter, r *http.Request) {
		fmt.Fprintf(w, "Hello go REST world!")
	})

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