Skip to content

A aplicação é uma API no padrão REST que gerencia e automatiza um banco de dados de uma escola. Foi utilizado Node.js com o framework Express

Notifications You must be signed in to change notification settings

hadmoraes/EscolaAPI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

60 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Escola API

Descrição da aplicação

A aplicação é uma API no padrão REST que gerencia e automatiza um banco de dados de uma escola. Para isso, foi utilizado o banco de dados relacional SQLite, o padrão MVC e o padrão DAO na construção do projeto.



Tecnologias utilizadas

Para o desenvolvimento da API foi utilizado JavaScript com NodeJS e o framework Express, além do banco de dados relacional SQLite com hospedagem na Heroku.



Dependências necessárias

"dependencies": {
    "cors": "^2.8.5",
    "dotenv": "^16.0.0",
    "express": "^4.18.1",
    "heroku": "^7.60.2",
    "moment": "^2.29.3",
    "path": "^0.12.7",
    "sqlite3": "^5.0.6"
}

Todas dependências necessárias estão neste arquivo. Para fazer um clone do projeto basta copiar o código abaixo usando "Ctrl + c" e em seguida colar no terminal com as telas "Ctrl + Shift + v".

git clone https://github.com/hadmoraes/EscolaAPI

Em seguida, entre na pasta EscolaAPI utilizando o seguinte comando no terminal:

cd EscolaAPI

E, por fim, instale todas as dependências necessárias:

npm i


Dependências de desenvolvimento

"devDependencies": {
    "jest": "^28.0.2"
  }

Essas são as dependências necessárias apenas para o ambiente de desenvolvimento da aplicação, caso deseje instalar utilize os comandos abaixo em seu terminal logo após o comando das dependências obrigatórias.

npm i jest --save-dev


Inicialização da aplicação via terminal

Para inicializar a aplicação basta abrir o terminal dentro da pasta do projeto e executar o código abaixo:

npm start


Testes Unitários

Para rodar os testes das validações da aplicação, basta abrir o terminal dentro da pasta do projeto e executar o código abaixo:

npm run test


Observação

A versão NodeJs utilizada para desenvolvimento é a 16.14.2, logo é necessário intalação de versão igual ou superior para a perfeita execução da mesma.



Banco de dados

Para construir a API foi necessária a modelagem e construção de um banco de dados. Para isso, utilizamos o site DBDiagram para modelagem de cada entidade e seus respectivos atributos, ilustrados na imagem abaixo.


As entidades que escolhemos foram Docentes, Alunos, Cursos, Turmas e Boletins, em que cada uma contém uma chave primária única. No caso dos Docentes e Alunos, as chaves primárias são seus respectivos CPFs. Já para Cursos, que se refere à série, o nome do curso já especifica unicamente essa entidade, como por exemplo, sexto ano do ensino fundamental. De forma semelhante, a entidade Turmas também tem como nome um código que já especifica unicamente aquela turma, por exemplo, 601 para a primeira turma do sexto ano, 802 para a segunda turma do oitavo ano, etc. Por fim, a entidade Boletins é identificada através do seu id.



Rotas da API

Cada entidade representa uma rota em nossa API. Sendo assim, as rotas disponíveis são:

  • "/alunos"
  • "/docentes"
  • "/cursos"
  • "/turmas"
  • "/boletins"

Acesse as rotas através do link abaixo alterando o nome da rota para a desejada:

https://api--escola.herokuapp.com + /nome da rota

Url da API

Estamos utilizando a hospedagem da Heroku, portanto, é possível utilizar o link abaixo em todas as rotas e métodos HTTP:

https://api--escola.herokuapp.com

Alunos

Ver todos os alunos:

Utilizar o método HTTP Get no caminho: url da api + /alunos

Buscar aluno por cpf:

Utilizar o método HTTP Get no caminho: url da api + /alunos/cpf

Adicionar aluno:

Utilizar o método HTTP Post no caminho: url da api + /alunos

No corpo da requisição é necessário inserir dados para todos os atributos dessa entidade. Nesse caso são os seguintes campos cpf, nome, email, telefone, data_nascimento.

Especificações dos campos:

  • cpf : colocar todos os 11 dígitos juntos sem quaisquer separação e entre aspas duplas
  • nome : deve conter no mínimo 3 caracteres e ser inserido entre aspas duplas
  • email : deve ser inserido um email válido entre aspas duplas
  • telefone : deve ser inserido 11 dígitos, DDD seguido do número, sem quaiquer tipo de separação e entre aspas duplas
  • data_nascimento : deve seguir o padrão DD/MM/AAAA entre aspas duplas

Na imagem abaixo temos um exemplo de requisição Post na rota alunos utilizando Insomnia:


Alterar um aluno já existente:

Utilizar o método HTTP Put no caminho: url da api + /alunos/cpf

Insira novamente todos os campos presentes na entidade Alunos, da mesma forma que o método anterior para adicionar um aluno, com as modificações desejadas no corpo da requisição.

Na imagem abaixo temos um exemplo de requisição Put na rota alunos utilizando Insomnia:


Deletar um aluno:

Utilizar o método HTTP Delete no caminho: url da api + /alunos/cpf



Docentes

Ver todos os docentes:

Utilizar o método HTTP Get no caminho: url da api + /docentes

Buscar docente por cpf:

Utilizar o método HTTP Get no caminho: url da api + /docentes/cpf

Adicionar docente:

Utilizar o método HTTP Post no caminho: url da api + /docentes

No corpo da requisição é necessário inserir dados para todos os atributos dessa entidade. Nesse caso são os seguintes campos cpf, nome, email, telefone, salario, disciplinas.

Especificações dos campos:

  • cpf : colocar todos os 11 digitos juntos sem quaisquer separação e entre aspas duplas
  • nome : deve conter no mínimo 3 caracteres e ser inserido entre aspas duplas
  • email : deve ser inserido um email válido entre aspas duplas
  • telefone : deve ser inserido 11 dígitos, DDD seguido do número, sem quaiquer tipo de separação e entre aspas duplas
  • salario : deve ser inserido sem aspas duplas e os centavos separados por ponto, por exemplo, 1500.65
  • disciplinas : todas as disciplinas devem ser inseridas separadas por / e entre aspas duplas, por exemplo, "português/literatura/inglês"

Na imagem abaixo temos um exemplo de requisição Post na rota docentes utilizando Insomnia:


Alterar um docente já existente:

Utilizar o método HTTP Put no caminho: url da api + /docentes/cpf

Insira novamente todos os campos presentes na entidade Docentes, da mesma forma que o método anterior para adicionar um docente, com as modificações desejadas no corpo da requisição.

Na imagem abaixo temos um exemplo de requisição Put na rota docentes utilizando Insomnia:


Deletar um docente:

Utilizar o método HTTP Delete no caminho: url da api+ /docentes/cpf



Cursos

Ver todos os cursos:

Utilizar o método HTTP Get no caminho: url da api + /cursos

Buscar curso por nome:

Utilizar o método HTTP Get no caminho: url da api + /cursos/nome

Adicionar um curso:

Utilizar o método HTTP Post no caminho: url da api + /cursos

No corpo da requisição é necessário inserir dados para todos os atributos dessa entidade. Nesse caso são os seguintes campos nome, carga_horaria, preco.

Especificações dos campos:

  • nome : se refere as séries presentes nas escola e deve conter no mínimo 3 caracteres e ser inserido entre aspas duplas, por exemplo, "nono ano do ensino fundamental"
  • carga_horaria : deve ser inserida um número inteiro com a carga horária total em horas de 1 ano letivo para aquela série sem aspas, por exemplo, 900
  • preco : deve ser inserido o valor da mensalidade sem aspas duplas e os centavos separados por ponto, por exemplo, 530.25

Na imagem abaixo temos um exemplo de requisição Post na rota cursos utilizando Insomnia:


Alterar um curso já existente:

Utilizar o método HTTP Put no caminho: url da api + /cursos/nome

Insira novamente todos os campos presentes na entidade Cursos, da mesma forma que o método anterior para adicionar um curso, com as modificações desejadas no corpo da requisição.

Na imagem abaixo temos um exemplo de requisição Put na rota cursos utilizando Insomnia:


Deletar um curso:

Utilizar o método HTTP Delete no caminho: url da api + /cursos/nome



Turmas

Ver todos as turmas:

Utilizar o método HTTP Get no caminho: url da api + /turmas

Buscar turma por nome:

Utilizar o método HTTP Get no caminho: url da api + /turmas/nome

Adicionar uma turma:

Utilizar o método HTTP Post no caminho: url da api + /turmas

No corpo da requisição é necessário inserir dados para todos os atributos dessa entidade. Nesse caso são os seguintes campos nome, curso_nome, data_inicio, data_final, turno.

Especificações dos campos:

  • nome : deve conter no mínimo 3 caracteres e ser inserido entre aspas duplas, exemplo, "901"
  • curso_nome : se refere ao atributo nome da entidade Cursos e deve conter no mínimo 3 caracteres e ser inserido entre aspas duplas, por exemplo, "nono ano do ensino fundamental"
  • data_inicio : deve seguir o padrão DD/MM/AAAA com aspas duplas
  • data_final : deve seguir o padrão DD/MM/AAAA com aspas duplas
  • turno : deve ser inserido com aspas duplas e só são aceitos manhã ou tarde, por exemplo, "manhã"

OBS: todos os campos que fazem referência a um atributo presente em outras entidades devem já existir previamente.

Na imagem abaixo temos um exemplo de requisição Post na rota turmas utilizando Insomnia:


Alterar uma turma já existente:

Utilizar o método HTTP Put no caminho: url da api + /turmas/nome

Insira novamente todos os campos presentes na entidade Turmas, da mesma forma que o método anterior para adicionar uma turma, com as modificações desejadas no corpo da requisição.

Na imagem abaixo temos um exemplo de requisição Put na rota turmas utilizando Insomnia:


Deletar uma turma:

Utilizar o método HTTP Delete no caminho: url da api + /turmas/nome



Boletins

Ver todos os boletins:

Utilizar o método HTTP Get no caminho: url da api + /boletins

Buscar boletim por id:

Utilizar o método HTTP Get no caminho: url da api + /boletins/id

Adicionar um boletim:

Utilizar o método HTTP Post no caminho: url da api + /boletins

No corpo da requisição é necessário inserir dados para todos os atributos dessa entidade. Nesse caso são os seguintes campos id, docente_cpf, aluno_cpf, turma_nome, disciplina, nota.

Especificações dos campos:

  • id : número inteiro que identifica o boletim unicamente. Não é permitido repetição de id, por isso confira antes na rota GET se o id já existe previamente.
  • docente_cpf : colocar todos os 11 digitos juntos sem quaisquer separação e entre aspas duplas
  • aluno_cpf : colocar todos os 11 digitos juntos sem quaisquer separação e entre aspas duplas
  • turma_nome : deve conter no mínimo 3 caracteres e ser inserido entre aspas duplas, exemplo, "901"
  • disciplina : deve conter no mínimo 3 caracteres e ser inserido entre aspas duplas, exemplo, "matemática"
  • nota : deve ser inserido o valor da nota sem aspas duplas e a casa decimal separada por ponto, por exemplo, 8.5

OBS: todos os campos que fazem referência a um atributo presente em outras entidades devem já existir previamente.

Na imagem abaixo temos um exemplo de requisição Post na rota boletins utilizando Insomnia:


Alterar um boletim já existente:

Utilizar o método HTTP Put no caminho: url da api + /boletins/id

Insira novamente todos os campos presentes na entidade Turmas, da mesma forma que o método anterior para adicionar uma turma, com as modificações desejadas no corpo da requisição.

Na imagem abaixo temos um exemplo de requisição Put na rota boletins utilizando Insomnia:


Deletar um boletim:

Utilizar o método HTTP Delete no caminho: url da api + /boletins/id



Autores

About

A aplicação é uma API no padrão REST que gerencia e automatiza um banco de dados de uma escola. Foi utilizado Node.js com o framework Express

Topics

Resources

Stars

Watchers

Forks

Contributors 4

  •  
  •  
  •  
  •