/42_labs

Desafio de desenvolver uma API REST e uma CLI em C. (21/02/2022 a 27/02/2022)

Primary LanguageC

42Labs challenge

Nesse desafio temos que construir duas aplicações utilizando C, uma API e uma CLI.

Como navegar por esse repositório

API - arquivos fonte para gerar a API

CLI - arquivos fonte para gerar o CLI

info - informações extras sobre o desáfio e minha aprendizagem


Tecnológias usadas no desenvolvimento do projeto

  • C: o projeto foi feito usando a linguagem C;
  • MySQL: como sistema gerenciador de banco de dados;
  • Makefile: para altomatizar a compilação dos programas;
  • vscode e Vim: editores de texto para o desenvolvimento do projeto;
  • git: para o versionamento dos arquivos do projeto;
  • github: para hospedagem dos arquivos;
  • Docker: para subir a api e almentar a portabilidade do app;
  • insomnia: organizador de requests para simular um client
  • Trello: para planejamento do projeto;
  • Notion: para manter links e aprendizagens importantes para o desenvolvimento do projeto.
  • Servidor dedicado para hospedagem do banco de dados:
Fornecido por turbomanifesto.org

CentOS v7.9.2009
Versão do MySQL    5.7.37
Intel(R) Xeon(R) D-2141I CPU @ 2.20GHz
16 VCPU
30 GB de memória RAM DDR4

Frameworks e bibliotecas utilizados

  • mongoose: biblioteca utilizada na criação do código da API;
  • libmysql: biblioteca utilizada para acessar o banco de dados;
  • Markdown: framework utilizado para escrever a documentação.

Como compilar o projeto

  1. Clone o repositório
git clone https://github.com/42sp/42labs-selection-process-v2-lamorim42.git
  1. Basta dar make no diretório que acabara de clonar. Um container com a aplicação da API será levantado e a API já estará disponivel para requisições em localhost:8000/. A CLI também será compilada ao dar o make
make

Make

  1. Para compilar apenas a CLI
make CLI

Depois de compilado o binário estará na pasta raiz ./my_cli


Utilizando a API

A API irá responder as requests de um cliente e salvar o log do request no arquivo server.log, localmente. Além disso a requisição GET no endpoit /secret retorna uma informção secreta do banco de dados que está hospedado em um servidor turbo.

O cliente pode fazer request do tipo GET em dois endpoints na API. No / e no /secret. Será retornado um body no formato JSON.

Exemplo de requests na API

Utilizando a CLI

A CLI irá usar os dados de log gerados pela API, salvos no arquivo server.log, e os printa no terminal.

Comandos da CLI

- Para ver todas as requisições escritas no log

./my_cli all log
  • Para ver as requisições válidas
./my_cli all

Exemplo de uso do CLI para all

- Para ver as requisições do método GET

./my_cli GET
  • Para ver as requisições do método GET em um endpoint válido
./my_cli GET /

./my_cli GET /secret

Exemplo de uso do CLI para GET