Apidog

All-in-one Collaborative API Development Platform

Design de API

Documentação de API

Depuração de API

Mock de API

Testes Automatizados de API

Inscreva-se gratuitamente
Home / Como Interagir com a API do GitHub Programaticamente: Um Guia para Desenvolvedores Node.js

Como Interagir com a API do GitHub Programaticamente: Um Guia para Desenvolvedores Node.js

O GitHub é uma plataforma essencial para desenvolvedores ao redor do mundo, proporcionando um espaço para colaboração, compartilhamento de código e controle de versão. Embora a interface web do GitHub ofereça funcionalidades robustas, existem muitos cenários em que você pode querer interagir com o GitHub programaticamente. É aqui que a API do GitHub entra em cena.

A API do GitHub permite que desenvolvedores automatizem fluxos de trabalho, recuperem dados e integrem os poderosos recursos do GitHub diretamente em suas aplicações. Se você está procurando buscar informações de usuário, listar repositórios ou gerenciar problemas e solicitações de pull, a API do GitHub oferece uma maneira flexível e eficiente de interagir com o GitHub programaticamente, e neste guia, aprenderemos como usá-la!

Pré-requisitos

Antes de mergulhar no uso da API do GitHub com Node.js, existem alguns pré-requisitos que você precisa ter em mente. Esta seção delineará os requisitos básicos e o conhecimento que você precisará para acompanhar este guia.

1. Conhecimento Básico de JavaScript e Node.js

Para usar efetivamente a API do GitHub com Node.js, você deve ter uma compreensão fundamental de JavaScript, especialmente programação assíncrona e promessas, pois esses conceitos são frequentemente usados ao fazer solicitações HTTP. Familiaridade com Node.js, incluindo a configuração de um projeto e a instalação de dependências, também é essencial.

2. Conta no GitHub

Você precisa de uma conta no GitHub para acessar a API do GitHub. Se você ainda não tem uma, pode se inscrever gratuitamente no GitHub. Além disso, você precisará criar um token de acesso pessoal para autenticar suas solicitações. Abordaremos como gerar esse token em uma seção posterior.

3. Node.js Instalado no Seu Sistema

Certifique-se de que o Node.js esteja instalado na sua máquina. Se ainda não o instalou, pode baixar a versão mais recente do site oficial do Node.js. Este tutorial usará Node.js, então tê-lo instalado é crucial para executar os exemplos de código fornecidos.

4. Compreensão Básica de APIs RESTful

Como a API do GitHub é uma API RESTful, ter uma compreensão básica de como as APIs REST funcionam será benéfico. Isso inclui entender métodos HTTP (GET, POST, PUT, DELETE), códigos de status e como lidar com respostas JSON.

5. Um Editor de Código

Um editor de código ou ambiente de desenvolvimento integrado (IDE) como Visual Studio Code, Sublime Text ou Atom ajudará você a escrever e gerenciar seu código de maneira eficiente. Qualquer editor de código que você esteja confortável funcionará bem para este tutorial.

Configurando Seu Ambiente

Antes que possamos começar a fazer solicitações para a API do GitHub, precisamos configurar nosso ambiente de desenvolvimento. Nesta seção, abordaremos os passos para configurar o Node.js, inicializar um novo projeto e instalar as bibliotecas necessárias.

Passo 1: Instalar o Node.js

Se você ainda não instalou o Node.js, baixe a versão mais recente do site oficial do Node.js. Siga as instruções de instalação específicas para seu sistema operacional. Para verificar se o Node.js está instalado corretamente, abra seu terminal ou prompt de comando e execute:

node -v

Este comando deve exibir o número da versão do Node.js instalado na sua máquina.

Passo 2: Inicializar um Novo Projeto Node.js

Em seguida, criaremos um novo diretório para o nosso projeto e o inicializaremos com npm (Node Package Manager). Abra seu terminal e execute os seguintes comandos:

mkdir github-api-tutorial
cd github-api-tutorial
npm init -y

O comando npm init -y cria um arquivo package.json com configurações padrão, que é necessário para gerenciar as dependências do projeto.

Passo 3: Instalar Bibliotecas Necessárias

Para interagir com a API do GitHub, precisamos tanto do express quanto de uma biblioteca cliente HTTP. Neste tutorial, usaremos axios, um cliente HTTP baseado em promessas para Node.js. Instale axios executando:

npm install express axios

Além disso, pode ser que precisemos do dotenv para gerenciar variáveis de ambiente de forma segura. Este pacote permite que carreguemos variáveis de ambiente de um arquivo .env para process.env, o que é útil para armazenar informações sensíveis, como tokens de API. Instale dotenv executando:

npm install dotenv

Passo 4: Criar um Arquivo .env

Crie um arquivo .env na raiz do seu diretório de projeto para armazenar seu token de acesso pessoal do GitHub. Este arquivo não deve ser comprometido no controle de versão para manter suas informações sensíveis seguras.

GITHUB_TOKEN=seu_token_de_acesso_pessoal_aqui

Substitua seu_token_de_acesso_pessoal_aqui pelo seu real token de acesso pessoal do GitHub. Abordaremos como gerar esse token em uma seção posterior.

Passo 5: Configurar a Estrutura do Projeto

Crie um novo arquivo chamado index.js no diretório raiz do seu projeto. Este arquivo servirá como o ponto de entrada principal para nossa aplicação Node.js.

Você também pode configurar uma estrutura de pastas básica se planeja expandir seu projeto mais adiante. Uma estrutura simples pode parecer assim:

github-api-tutorial/
├── node_modules/
├── .env
├── index.js
├── package.json
└── package-lock.json

Criando um Token de Acesso Pessoal do GitHub

Para acessar endpoints autenticados e aumentar seus limites de taxa da API, você precisa de um token de acesso pessoal do GitHub. O GitHub possui um ótimo guia sobre como criar um token de acesso, que você pode encontrar abaixo;

Os passos também estão delineados abaixo para que você possa seguir facilmente :)

  1. Faça login em sua conta do GitHub e navegue até Configurações.
  2. No menu à esquerda, clique em Configurações do desenvolvedor.
  3. Clique em Tokens de acesso pessoal e depois em Tokens (clássicos).
  4. Clique no botão Gerar novo token.
  5. Forneça uma anotação para descrever o propósito do token (exemplo: "Tutorial da API do GitHub").
  6. Selecione os escopos ou permissões que deseja conceder a este token. Para este tutorial, selecione repo (para acesso ao repositório) e user (para acessar informações do usuário). Você pode ajustar os escopos com base em suas necessidades específicas.
  7. Clique em Gerar token.
  8. Copie o token gerado e armazene-o em seu arquivo .env como descrito anteriormente. Nota: Trate este token como uma senha e nunca o compartilhe publicamente.

Configurando uma Aplicação Express com Rotas para Solicitações da API do GitHub

Vamos criar um servidor Express básico com duas rotas: uma para buscar o perfil de um usuário do GitHub e outra para buscar seus repositórios.

Veja como seu arquivo index.js poderia ficar:

// Importar módulos necessários
require('dotenv').config();
const express = require('express');
const axios = require('axios');

const app = express();

// Middleware para analisar dados JSON e URL codificados
app.use(express.json());
app.use(express.urlencoded({ extended: true }));

// Rota para buscar perfil de usuário do GitHub
app.get('/user/profile', async (req, res) => {
    try {
        const response = await axios.get('https://api.github.com/user', {
            headers: {
                'Authorization': `Bearer ${process.env.GITHUB_TOKEN}`
            }
        });
        res.json(response.data);  // Enviar os dados do perfil do usuário como resposta JSON
    } catch (error) {
        res.status(500).json({ error: 'Erro ao buscar perfil do usuário', details: error.message });
    }
});

// Rota para buscar repositórios do usuário do GitHub
app.get('/user/repos', async (req, res) => {
    const username = req.query.username || 'irorochad'; // Padrão para 'irorochad' se nenhum nome de usuário for fornecido
    try {
        const response = await axios.get(`https://api.github.com/users/${username}/repos`, {
            headers: {
                'Authorization': `Bearer ${process.env.GITHUB_TOKEN}`
            }
        });
        res.json(response.data);  // Enviar os dados dos repositórios do usuário como resposta JSON
    } catch (error) {
        res.status(500).json({ error: 'Erro ao buscar repositórios do usuário', details: error.message });
    }
});

// Iniciar o servidor
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
    console.log(`Servidor rodando em http://localhost:${PORT}`);
});
Você pode até considerar usar controladores para tornar o código mais legível.

Explicação do Código:

Importar Módulos Necessários:

  • Importamos dotenv para carregar variáveis de ambiente de um arquivo .env, express para criar o servidor e axios para fazer solicitações HTTP para a API do GitHub.

Configurar Middleware:

  • Os middlewares express.json() e express.urlencoded() são usados para analisar requisições recebidas com cargas úteis JSON e dados URL codificados, respectivamente.

Criar Rotas:

  • GET /user/profile: Esta rota busca o perfil do usuário autenticado do GitHub usando a biblioteca axios. Os dados do perfil são retornados como uma resposta JSON.
  • GET /user/repos: Esta rota busca os repositórios públicos de um usuário do GitHub especificado. O nome de usuário é fornecido como um parâmetro de consulta (por exemplo, /user/repos?username=irorochad). Se nenhum nome de usuário for especificado, o padrão é 'irorochad'.

Tratamento de Erros:

  • Se ocorrer um erro durante a solicitação da API, o servidor responde com um código de status 500 e um objeto JSON contendo os detalhes do erro.

Iniciar o Servidor:

  • O servidor escuta em uma porta especificada (padrão para 3000, se não estiver definido no ambiente) e registra uma mensagem quando é iniciado.

3. Atualize Seu Arquivo .env

Certifique-se de que seu arquivo .env contenha o seguinte:

GITHUB_TOKEN=seu_token_de_acesso_pessoal_aqui
PORT=3000

Substitua seu_token_de_acesso_pessoal_aqui pelo seu verdadeiro token de acesso pessoal do GitHub.

4. Executando Sua Aplicação

Para executar sua aplicação Express, use o seguinte comando:

node index.js

Seu servidor agora deve estar rodando em http://localhost:3000, e é hora de testar nossos endpoints!!!

  • Buscar Perfil do Usuário: Acesse http://localhost:3000/user/profile para obter o perfil do usuário autenticado.
  • Buscar Repositórios do Usuário: Acesse http://localhost:3000/user/repos?username=<GitHubUsername> (substitua <GitHubUsername> pelo nome de usuário do GitHub desejado) para obter os repositórios do usuário.

Testando Nossos Endpoints Usando Apidog

Página inicial do Apidog

Apidog aprimora a segurança da API oferecendo documentação robusta, testes automatizados e monitoramento em tempo real. O Apidog também ajuda na conformidade com padrões do setor, como GDPR e HIPAA, garantindo que suas APIs protejam os dados do usuário de forma eficaz.

Além disso, o Apidog suporta a colaboração em equipe, promovendo um ambiente de desenvolvimento focado em segurança. Ao integrar o Apidog, você pode construir APIs seguras, confiáveis e em conformidade, protegendo seus dados e usuários contra várias ameaças de segurança.

botão

Uma vez que você tenha o Apidog ou a versão web instalada, pode começar criando um novo projeto e enviando sua primeira solicitação.

Testando o Endpoint de Busca de Usuário:

Antes que possamos chamar este endpoint, precisaremos informar ao Apidog que o endpoint requer um token de acesso, e precisamos fornecer o token de acesso ao Apidog para permitir que ele faça a solicitação.

Podemos fazer isso navegando até a seção de Autenticação da página de solicitação e inserindo o token no campo onde é necessário, conforme mostrado abaixo;

Endpoint de Busca de Usuários

Como você pode ver na captura de tela acima, o endpoint de busca de usuário está funcionando bem como esperado, e isso se deve ao fato de que nosso servidor está ativo e em funcionamento, e também passamos o token de acesso ao Apidog. Sem o token de acesso, a solicitação falhará, e não poderemos ver as respostas sobre essa solicitação.

Testando o Endpoint de Busca de Repositórios:

Resultados dos Endpoints de Busca de Repositórios

Assim como os endpoints fetch users, o endpoint fetch repo também precisa de um token de acesso para fazer a chamada.

Conclusão

Integrar a API do GitHub com uma aplicação Node.js abre um mundo de possibilidades para desenvolvedores que buscam automatizar fluxos de trabalho, analisar dados ou aprimorar suas aplicações com os poderosos recursos do GitHub. Neste guia, caminhamos pelo processo de configuração de um servidor Express e criação de rotas para buscar informações do perfil do usuário e repositórios do GitHub.

Ao seguir os passos delineados, você agora tem uma compreensão básica de como interagir com a API do GitHub usando Node.js e Express. Você pode facilmente expandir isso adicionando mais rotas para explorar diferentes endpoints, como gerenciamento de problemas, solicitações de pull e mais.

Junte-se à Newsletter da Apidog

Inscreva-se para ficar atualizado e receber os últimos pontos de vista a qualquer momento.