16/100 Dias de Golang - Requests para APIs Externas - Parte 3
Table of Contents
#
Requests para APIs Externas - Parte 3
Go possui um forte compromisso com a biblioteca padrão. Isso significa que a maioria das funcionalidades que você precisa já estão disponíveis na biblioteca padrão. Porém, em alguns casos, você pode precisar de uma biblioteca externa. Vamos implantar o mesmo código usando a biblioteca [github.com/go-resty/resty/v3](https://github.com/go-resty/resty)
, que é uma biblioteca de cliente HTTP muito popular e fácil de usar.
package main
import (
"fmt"
"net/http"
"github.com/go-resty/resty/v2"
)
func main() {
client := resty.New()
// Faz a requisição GET
resp, err := client.R().
Get("https://the-one-api.dev/v2/book")
if err != nil {
fmt.Println("Erro ao fazer request:", err)
return
}
defer resp.RawResponse.Body.Close()
// Verifica o status da resposta
if resp.StatusCode() != http.StatusOK {
fmt.Println("Erro na resposta:", resp.Status())
return
}
// Imprime o corpo da resposta
fmt.Println("Resposta:", string(resp.Body()))
}
A biblioteca resty
facilita a criação de requisições HTTP. No exemplo acima, usamos o método R()
para criar uma nova requisição e o método Get()
para fazer a requisição GET. A resposta é retornada como um objeto Response
, que possui métodos para acessar o corpo da resposta, o status da resposta e outros detalhes. Vou adicionar um exemplo adicionar um bearer token no cabeçalho da requisição. A única coisa que temos que fazer é adicionar o método SetAuthToken
na requisição.
resp, err := client.R().
SetAuthToken("your-api-key-123").
Get("https://the-one-api.dev/v2/movie")
Veja essa requisição com query params.
res, err := client.R().
SetQueryParams(map[string]string{
"name": "Gandalf",
}).
SetHeader("Accept", "application/json").
SetAuthToken("xXv82jAoISsyW8ze60P5").
Get("/character")
Somente adicionamos o método SetQueryParams
e passamos um mapa com os parâmetros que queremos adicionar na URL. Perceba que esse mapa é um map[string]string
, ou seja, a chave e o valor são do tipo string.
A biblioteca resty
também possui suporte a middlewares, o que significa que você pode adicionar funcionalidades adicionais às suas requisições, como autenticação, manipulação de erros e muito mais. Isso torna a biblioteca resty
uma ótima opção para quem precisa de um cliente HTTP mais avançado e flexível. Talvez para um projeto futuro possamos fazer um wrapper de uma API com essa biblioteca.