Pular para o conteúdo principal

victorstein.dev

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.