Adonis
O que é
O Adonis é um framework MVC para node.js, baseado no Laravel do PHP, que traz uma forma objetiva de organizar o projeto e as ferramentas necessárias para desenvolver uma aplicação completa.
Como usar
Você precisará baixar o pacote do Adonis e criar um novo projeto usando a ferramenta de CLI, que criará a estrutura completa do projeto. Siga os itens abaixo, que isso será abordado.
Como aprender + validando o conhecimento
A melhor fonte de informação é realmente a Documentação do Adonis 4.1. Mas a documentação é bem completa, e levaria cerca de três horas para ler tudo, então vou listar aqui o que é essencial ler.
Durante os estudos, você desenvolverá um projeto de uma API simples, com dois CRUDS, para entender onde cada coisa fica e como elas se comunicam.
O foco será:
- Rotas
- Controller
- Model
- Acesso e manipulação de dados
- Teste
O foco atual não será:
- Autenticação e segurança
- Renderização de View
Leitura básica
- Começar a ler direto dos conteúdos de "Concept", mas sem se prender muito porque é só uma teoria, apenas dê uma lida rápida
- Criar um projeto novo seguindo a leitura dos três capítulos de "Getting started"
- Remover pasta "public", já que não teremos view no projeto
- Desativar csrf para reduzir a segurança, já que não teremos views
Database
Os dados no Adonis podem ser acessados usando o Database
, que seria uma forma mais direta de acesso aos dados, mas nos projetos usaremos sempre o Lucid.
O Lucid implementa um padrão de Active Record, onde é importante saber que existe uma coleção de registros e uma instância de um registro.
- Ler sobre Database para configurar a conexão e acesso aos dados
- Ler sobre Lucid ORM enquanto faz as tarefas seguintes
- Criar uma tabela simples (pelo ao menos 3 campos) - Migrattions
- Criar o model desta tabela model
- Criar seeds e factories que crie 30 registros aleatórios na sua tabela
Rotas e controllers
- Criar controller - testar usar
--resource
na criação e ver a difrença - Criar rotas de CRUD, tentar usar rota resourceful para ver como funciona
- Ler sobre request e response para enteder como obter os parâmetros e retornar resultados
- Realizar insert/select/update/delete nos registros usando query builder
- Criar um Validator para só salvar dados válidos
Tratamento de erros
No conceito do Laravel e do Adonis, os modelos e rotas emitem exceptions, que são capturadas por um handler global, que decide o que irá fazer, e como irá retornar para o usuário.
- Estudar Error Handling para retornar mensagens de erros amigáveis quando necessário
Segunda tabela
- Criar uma segunda tabela (migration, seed, factory) que tenha um dado relacionado a primeira
- Criar um relacionamento em cada um dos modelos (não precisa estudar "traits")
- Criar controller para a segunda tabela, que retorne os registros relacionados também nos endpoints de get
Testes
- Criar um método de instância em um dos models, e implementar um teste unitário que valide se o que o método retorna está de acordo com o esperado
- Criar um teste de funcional para confirmar que ao incluir um registro via post, o retorno é o próprio objeto enviado, porém retornando o
id
também
Links úteis
- Chance - biblioteca usada no "faker" do Adonis
- Chai - biblioteca de assertions dos testes do Adonis
- Indicative - biblioteca usada no valitador
- Japa - biblioteca usada nos testes
Validando o conhecimento
Se você chegou até aqui, e fez todo o projeto, certamante já entendeu como as coisas funcionam. Mas dedique um tempo com algum dev que já tenha prática no Adonis para discutir:
- Lucid, métodos estáticos da coleção, métodos da instância, relações
- Error handling, quando tratar erros no controller, e quando deixar para o error handler "global"
- Implementação de testes funcionais e unitários