Desafio proposto: Implementar uma Web Service RESTful capaz de se comunicar com aplicações mobile e web.
Como detalhado nos requisitos do desafio, será desenvolvido uma API Web Service RESTful para gerenciamento de exames de uma instituição de educação.
Para o bom entendimento e melhor implementação do projeto, seguirei a seguinte estrutura:
- Entender para atender;
- Modelagem do Banco de Dados;
- Passo-a-passo para rodar o projeto localmente;
- Detalhes da implementação;
Um Web Service é um conjunto de métodos que apresentam uma estrutura arquitetural que permita a comunicação entre aplicações mesmo em linguagens de programação distintas. Um web service pode ser realizado remotamente ou ser utilizado para compor um novo serviço juntamente com outros podendo dizer que funcionam como uma forma de tradutor entre as diferentes linguagens, de modo que aplicações inicialmente desenvolvidas com base num sistema ou linguagem podem ser alteradas através de outros softwares, inclusive remotamente.
Um web service possui uma interface, que oculta os detalhes da implementação para que possa ser usada independente da plataforma de hardware ou software na qual ela é implementada e independente da linguagem de programação na qual ela é gravada.
A A Application Programming Interface (API) ou Interface de Programação de Aplicações, em português, é definida como uma interface que cumpre o papel de conectar duas plataformas, permitindo que se comuniquem com agilidade, além de determinar como os seus softwares devem trocar informações.
Ao adotar essa ferramenta, é possível integrar serviços terceirizados, como o Google Maps. O uso de APIs está associado à requisição de funções em um software, o que é feito a partir de protocolos e rotas, que geram respostas de dados JSON (JavaScript Object Notation) e XML. No caso desta API em específico, é utilizada a resposta de dados JSON.
Por sua vez, os Web Services são considerados APIs que podem se comunicar umas com as outras por meio de redes. Eles ainda podem ser usados em conjunto para possibilitar a execução de operações de alta complexidade.
Geralmente, isso é feito com o Hyper Text Tranfer Protocol (HTTP), que em português se chama Protocolo de Transferência de Hipertexto — protocolo de comunicação cuja função é transferir dados. Isso inclui não só palavras, mas também sons e imagens na Word Wide Web (www), que é a rede mundial de computadores, dentro de sites que foram programados com a linguagem HTML.
- Linguagem Ruby v. 3.1.2
- Framework Rails v. 7.0.4
- Banco de Dados PostgreSQL
- Criar o banco de dados
- rails db:create
- Executar as migrations
- rails db:migrate
- Instalar as gems e dependências
- bundle install
- Executar a aplicação
- rails server
Uma breve documentação da API: API Exams Postman Documentation
Procurei deixar as partes mais importantes prontas, para que o projeto pudesse em seu roadmap ir crescendo com as atualizações seguintes:
-
Criar controller de Question e Answer;
-
Implementar testes unitários e de integração;
-
Trocar o sistema de autenticação da gem Pundit por JWTs;
-
Implantar o sistema de correção automática das provas;
-
Implantar o sistema de rankeamento por notas dos alunos
-
Utilizar docker-compose para criar um container de aplicação
