Movies API
Tecnologias Empregadas:
Ruby 3.0.4
Rails 6.1.7.3
PostgreSQL 12.14
Ubuntu 20.04
Gems:
kaminari
pg_search
Descrição:
Desafio realizado para uma oportunidade backend. O teste consistiu em criar uma API de serviço do catálogo de filmes com dois endpoints:
Um que faça a leitura de um arquivo CSV para registrá-los no banco de dados.
Um segundo que liste todos os filmes cadastrados em formato JSON.
Para tanto, foi necessário utilizar Ruby on Rails, seguir o padrão de API Restful, além de que a response deveria seguir um padrão pré-estabelecido, ordenado pela data de lançamento do filme e não deveria possuir duplicidade de registros.
Veja o repositório do código para acessar as instruções de acesso à API.
Principais Desafios:
Desenvolvimento Inicial: Criar uma API de serviço do catálogo de filmes utilizando Ruby on Rails, especialmente se for a primeira experiência com a tecnologia.
Leitura de Dados: Implementar um método eficiente para ler informações de um arquivo CSV e inseri-las no banco de dados.
Modelagem de Dados: Garantir que a estrutura do banco de dados suporte todos os detalhes do filme, incluindo título, diretor, sinopse, ano de lançamento e gênero.
Seleção do Banco de Dados: Escolher entre SQLite, Postgresql ou MongoDB, cada um com suas peculiaridades e características.
Implementação RESTful: Adotar e manter o padrão RESTful ao desenvolver os endpoints da API.
Ordenação e Filtragem: Desenvolver funcionalidades de ordenação e filtragem, especialmente quando as regras de ordenação são específicas (por exemplo, ordenar pelo ano de lançamento).
Prevenção de Duplicidade: Implementar lógica para garantir que não haja registros duplicados, o que pode ser complexo dependendo da estrutura dos dados.
Estrutura de Resposta Exata: Assegurar que a resposta do endpoint de listagem adira estritamente ao formato especificado.
Configuração de Ambiente: Lidar com configurações específicas, como a extensão 'pgcrypto' e a autenticação como 'SUPERUSER' no PostgreSQL, que podem ser desafiadoras para desenvolvedores menos experientes.
Paginação Eficiente: Implementar paginação que seja tanto eficiente em termos de desempenho quanto amigável ao usuário.
Implementação de Busca: Utilizar ferramentas como 'PG-Search' para oferecer um serviço de busca robusto e abrangente.
Testes: Decidir quais testes são necessários, como implementá-los usando RSpec e garantir que eles cubram todos os aspectos críticos da aplicação.
Screenshots:
Consulta da API de filmes buscando pelo título 'Batman' com resultados em JSON:
Resposta de erro da API quando nenhum termo de busca é fornecido, retornando todos os filmes cadastrados:
Nesta captura de tela, observamos o resultado de um pedido POST bem-sucedido ao endpoint /api/v1/movies
usando o Postman. O arquivo netflix_titles.csv
foi carregado com sucesso, e o servidor confirmou o recebimento e o processamento corretos do arquivo, retornando a mensagem: "Acabamos de salvar o CSV que você nos enviou. Obrigado":
Resposta de erro da API quando nenhum termo de busca é fornecido, garantindo a qualidade e a precisão dos resultados:
Nesta tela, tentou-se fazer o upload de um arquivo com a extensão .xlsx
, que não é compatível com as especificações da API. Em resposta, o servidor indica claramente que aceita apenas arquivos CSV e pede ao usuário que verifique o formato do arquivo antes de enviar:
Esta imagem mostra a resposta do servidor após uma tentativa de enviar um pedido POST sem anexar um arquivo CSV. Como resultado, o servidor retorna uma mensagem de erro indicando que nenhum arquivo CSV foi recebido e solicitando que o usuário tente novamente.
Subscribe to my newsletter
Read articles from Ícaro Leon directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by