APIs RESTful são arquiteturas populares para transferência de dados pela web. APIs RESTful normalmente usam HTTP, tornando-as adequadas para casos em que a ausência de estado é importante.
Como qualquer linguagem do lado do servidor, você pode interagir com o protocolo HTTP e fazer solicitações HTTP em Go.
Introdução ao consumo de APIs RESTful em Go
o http O pacote fornece a maioria das funcionalidades necessárias para interagir com o protocolo HTTP em Go. Isso inclui fazer solicitações HTTP, e você não precisa necessariamente dependências externas, como Gin ou um banco de dados.
Você pode usar o http pacote para consumir APIs e buscar páginas para raspagem da web em Go.
Importe esses pacotes para começar a fazer solicitações HTTP em Go.
importar (
"bytes"
"codificação/json"
"fm"
"io/ioutil"
"rede/http"
)
Você usará o bytes pacote para manipular fatias de bytes, o json pacote para formatar dados de solicitação, o fmt pacote para gravar na saída padrão, o ioutil pacote de entrada e saída, e o http pacote para envio de solicitações.
Uma solicitação GET simples em Go
Típica PEGUE solicitações lêem dados de um servidor e podem fornecer parâmetros para os dados dependendo da natureza e especificação da API.
Neste tutorial, você aprenderá a consumir APIs RESTful usando o serviço simples de solicitação e resposta do httpbin.
Aqui está um exemplo de como fazer uma solicitação HTTP com Go:
url := "https://httpbin.org/get"
resposta, err := http. Obter (url)
E se err!= nada {
fmt. Printf("Ocorreu um erro na solicitação de API %s", err. Erro())
} senão {
// continua [1] ...
}
o URL variável é o endpoint para o qual você está enviando a solicitação. o Pegue método recebe a URL, executa o Pegue request e retorna a resposta, incluindo seus cabeçalhos e corpo.
Você pode lidar com quaisquer erros da solicitação, dependendo de seus requisitos. Se não houver erros, você pode prosseguir para extrair as informações necessárias do Pegue solicitar.
} senão {
//... [1] continuação
responseData, err := ioutil. ReadAll (resposta. Corpo)
E se err!= nada {
fmt. Printf("Ocorreu um erro ao analisar o corpo da solicitação %s", err. Erro())
} senão {
// continua [2] ...
}
}
A resposta Corpo campo contém o corpo da resposta. Usando o Leia tudo método do ioutil pacote, você pode ler o corpo da resposta e lidar com possíveis erros.
} senão {
//... [2] continuação
fmt. Imprimirln(corda(respostaDados))
}
o senão A instrução imprime o corpo da resposta em seu console se não houver erros na operação de leitura.
Aqui está o resultado da PEGUE solicitação para o endpoint do httpbin.
Uma solicitação POST simples em Go
As solicitações POST típicas fornecem cargas úteis de dados ao servidor e o servidor retorna uma resposta dependendo da operação.
Aqui está uma estrutura simples para codificar uma carga JSON para o servidor como parte da solicitação POST.
modelo JSON estrutura {
informação corda
mensagem corda
}
o JSON estrutura tem o informação e mensagem campos de string e você inicializará uma instância de struct para a solicitação.
url := "https://httpbin.org/post"
jsonInstance := JSON {
info: "esperando sucesso",
mensagem: "o pedido deve Retorna ",
}
o URL A variável armazena o endpoint de solicitação POST do site httpbin. o jsonInstance A variável é uma instância da estrutura JSON que você pode usar para armazenar e enviar dados estruturados.
Você pode usar o Marechal método do json pacote para formatar JSON para a solicitação.
jsonData, err := json. Marechal (jsonInstance)
E se err!= nada {
fmt. Println("ocorreu um erro com o JSON", err. Erro())
} senão {
// continua [1] ...
}
o Marechal O método também retorna um erro que você pode manipular. Se não houver erros com a operação de marshaling JSON, você poderá prosseguir para fazer a solicitação POST.
Você pode usar o Publicar método para fazer solicitações POST. o Publicar O método recebe o endpoint da URL, o tipo de conteúdo da solicitação e um buffer da carga útil. Ele retorna a resposta e um erro.
} senão {
//... continuação [1]
resposta, err := http. Post (url, "aplicativo/json", bytes. NewBuffer (jsonData))
E se err!= nada {
fmt. Println("Ocorreu um erro na solicitação", err. Erro())
} senão {
// continua [2] ...
}
}
Novamente, você pode ler o corpo da resposta usando o Leia tudo método do ioutil pacote:
} senão {
//... continuação [2]
dados, err := ioutil. ReadAll (resposta. Corpo)
E se err!= nada {
fmt. Println("Ocorreu um erro ao ler o corpo da solicitação", err. Erro())
} senão {
fmt. Imprimirln(corda(dados))
}
}
o Imprimir A instrução gera o resultado da solicitação HTTP para seu console.
Enquanto o documentação do httpbin especifica, esse endpoint POST retorna os dados de solicitação que você envia.
Criar aplicativos da Web em Go é fácil
Você pode criar aplicativos da Web com várias funcionalidades em Go sem dependências.
o http pacote tem as funções que você precisa para a maioria de suas operações. Você pode usar este pacote com outros como o json pacote para operações JSON, o contexto pacote para sinalização e o pacote modelo para modelagem. Existem muitos outros pacotes na biblioteca padrão.