- Este é um projeto básico de Backend, utilizando Typescript, MySQL, além das bibliotecas knexJs e expressJs, desenvolvido para atender aos modelos REST API.
- O projeto consiste em simular a metodologia CRUD na estruturação de Sistema de Registros e Cadastros de alunos,docentes e turmas em um dado sistema acadêmico, sendo criado endpoints
GET,POST,PUTeDELETEpara alimentar as demandas.
LINK DA DOCUMENTAÇÃO NO POSTMAN: https://documenter.getpostman.com/view/15825773/Tzsfo6Bn
http://localhost:3003/class/:classId/student
- Este endpoint retorna todos os estudantes presentes em uma dada turma.
- A turma deve ser buscada pelo seu
id. - São exibidos dos estudantes seus
namee respectivosidcomo resposta. - É exibido o
nameda turma
No Content
No Content
- classId 1
{
"className": "Turma 1",
"students": [
{
"id": 2,
"name": "Pedro"
},
{
"id": 5,
"name": "Carlos"
}
]
}
classIddeve ser um número inteiro, não-negativo e não-nulo.
http://localhost:3003/class/:classId/teacher
- Este endpoint retorna todos os professores presentes em uma dada turma.
- A turma deve ser buscada pelo seu
id. - São exibidos dos professores seus
namee respectivosidcomo resposta. - É exibido o
nameda turma.
No Content
No Content
- classId 1
{
"className": "Turma 1",
"teachers": [
{
"id": 4,
"name": "César"
}
]
}
classIddeve ser um número inteiro, não-negativo e não-nulo.
http://localhost:3003/student/age/:studentId
- Este endpoint retorna a idade de um aluno.
- A busca deve ser realizada pelo respectivo
iddo estudante. - É exibido apenas a informação
agedo estudante.
No Content
No Content
- studentId 1
{
"age": 41
}
studentIddeve ser um número inteiro, não-negativo e não-nulo.
http://localhost:3003/student/hobby?description=value
- Este endpoint retorna todos os estudantes com um mesmo hobby comum.
- A busca é feita através do query param
description. - São exibidos dos estudantes seus
namee respectivosidcomo resposta. - É exibido também o nome do hobby de busca.
No Content
No Content
- value correr
{
"hobby": "correr",
"students": [
{
"id": 1,
"name": "Joao"
}
]
}
valuedeve ser o nome exato de busca do hobby.
http://localhost:3003/student
- Este endpoint cria um novo estudante.
{
"name": "Nome_Aluno",
"email": "aluno@aluno.com",
"birthDate": "10/06/1999",
"hobbies": [{
"description": "ping pong"
},
{
"description": "ler"
}]
}
Content-Type: application/json
No Content
{
"message": "Student created successfully!"
}
name,emailebirthDatesão campos obrigatórios.birthDatedeve ser inserido no formato DD/MM/YYYY.hobbiessão opcionais e, caso sejam inseridos, devem ser enviados no modelo array de objetos, cuja única propriedade édescription.- Todos os campos são obrigatoriamente
string type.
http://localhost:3003/teacher
- Este endpoint cria um novo professor.
{
"name": "Nome_Professor",
"email": "professor@professor.com",
"birthDate": "20/05/1995",
"specialties": [{
"description": "CSS"
}]
}
Content-Type: application/json
No Content
{
"message": "Teacher created successfully!"
}
name,emailebirthDatesão campos obrigatórios.birthDatedeve ser inserido no formato DD/MM/YYYY.specialtiessão opcionais e, caso sejam inseridos, devem ser enviados no modelo array de objetos, cuja única propriedade édescription.specialtiespossui restrição aos seguintes valores: "Backend", "CSS", "Programação Orientada a Objetos", "React", "Redux", "Testes" ou "Typescript".- Todos os campos são obrigatoriamente
string type.
http://localhost:3003/class
- Este endpoint cria uma nova turma.
{
"name": "Nome_Turma",
"startDate": "01/01/2021",
"endDate": "06/06/2021",
"module": 2,
"period": "integral"
}
Content-Type: application/json
No Content
{
"message": "Class created successfully!"
}
name,startDate,endDateemodulesão campos obrigatórios.startDateeendDatedevem ser inseridos no formato DD/MM/YYYY.periodé um campo opcional, que somente possui dois valores: "integral" ou "noturno".- Caso não seja enviado valor para
period, a turma criada tomará como padrão o valorintegral. - Para
periodde valornoturno, o valor denamedeve obrigatoriamente terminar em-na-night. modulepossui restrição aos seguintes valores: 0, 1, 2, 3, 4, 5, 6 e 7.moduledeve ser preenchido comonumber type. Todos os demais campos são obrigatoriamentestring type.
http://localhost:3003/class/student
- Este endpoint aloca um estudante em uma turma.
- Devem ser enviados os respecitovs
iddo estudante e a da turma.
{
"classId": 1,
"studentId": 2
}
Content-Type: application/json
No Content
{
"message": "Student associated to class successfully!"
}
classIdestudentIddevem ser um número inteiro, não-negativo e não-nulo.- Somente é possível alocar um estudante em uma única turma.
http://localhost:3003/class/teacher
- Este endpoint aloca um professor em uma turma.
- Devem ser enviados os respectivos
iddo professor e a da turma.
{
"classId": 2,
"professorId": 3
}
Content-Type: application/json
No Content
{
"message": "Teacher associated to class successfully!"
}
classIdeteacherIddevem ser um número inteiro, não-negativo e não-nulo.- Somente é possível associar um professor a uma única turma.
http://localhost:3003/class/:classId/module
- Este endpoint modifica o módulo a qual a turma se encontra no momento.
- Deve ser enviado os
moduledesejado na alteração, apenas.
{
"module": 2
}
Content-Type: application/json
No Content
{
"message": "Module from class updated successfully!"
}
moduledeve ser um número inteiro, dentre os seguintes valores: 0, 1, 2, 3, 4, 5, 6 e 7.
http://localhost:3003/class/:classId/student/:studentId
- Este endpoint remove um estudante de uma dada turma.
- A busca deve ser realizada pelos respectivos
idda turma e do estudante.
No Content
No Content
- classId 1
- studentId 1
{
"message": "Student has been removed from class successfully!"
}
classIdestudentIddevem ser um número inteiro, não-negativo e não-nulo.
http://localhost:3003/class/:classId/teacher/:teacherId
- Este endpoint remove um professor de uma dada turma.
- A busca deve ser realizada pelos respectivos
idda turma e do professor.
No Content
No Content
- classId 1
- teacherId 1
{
"message": "Teacher has been removed from class successfully!"
}
classIdeteacherIddevem ser um número inteiro, não-negativo e não-nulo.