API Restfull responsável pela manutenção curricular
No terminal, navegue até a pasta raiz do projeto e execute
./mvnw test
no Windows
mvnw.cmd test
No terminal, navegue até a pasta raiz do projeto e execute
docker-compose up --build
Para que não seja necessário instalar nada em sua máquina, a aplicação esta configurada para salvar os dados no banco de dados em mémoria.
No terminal, navegue até a pasta raiz do projeto e execute
./mvnw clean install
no Windows
mvnw.cmd clean install
Após a conclusão, execute
./mvnw spring-boot:run
no Windows
mvnw.cmd spring-boot:run
As seguintes tecnologias foram usadas na construção do projeto:
Recursos disponíveis para acesso via api: http://localhost:8081/api/v1
GET: /materias: para listar todas as materias
GET: /materias/frequencia/{id}: para listar todas as materias pela frequencia
GET: /materias/horario-minimo/{horas}: para listar todas as materias pelo horario minimo
GET: /materias/{id}: para listar a materia pelo id
POST: /materias: para cadastrar uma materia
PUT: /materias: para alterar uma materia
DELETE: /materias/{id}: para deletar uma materia
GET: /cursos: para listar todos os cursos
GET: /cursos/{id}: para listar o curso pelo id
GET: /cursos/codigo-curso?codigo={codigo}: para listar o curso pelo codigo
POST: /cursos: para cadastrar um curso
PUT: /cursos: para alterar um curso
DELETE: /cursos/{id}: para deletar um curso
Authorization: Basic Auth [Username: root, Password: root]
| Código | Descrição |
|—-|—-|
| 200
| Requisição executada com sucesso (Success).|
| 201
| Requisição cadastrada com sucesso (Success).|
| 400
| Erros de validação ou cadastro existente (Bad Request).|
| 401
| Dados de acesso inválidos (Unauthorized).|
| 404
| Registro pesquisado não encontrado (Not Found).|
POST: /materias
com body:
Request (application/json)
{
"nome": "PROGRAMAÇÃO ORIENTADA A OBJETOS",
"codigo": "POO",
"horas": 65,
"frequencia": 1
}
Response 201 (Created)
{
"statusCode": 200,
"data": true,
"timeStamp": 1628736630946,
"links": [
{
"rel": "self",
"href": "http://localhost:8081/api/v1/materias"
},
{
"rel": "UPDATE",
"href": "http://localhost:8081/api/v1/materias"
},
{
"rel": "GET_ALL",
"href": "http://localhost:8081/api/v1/materias"
}
]
}
Response 400 (Bad Request) - Cadastro existente
{
"statusCode": 400,
"data": "Matéria já possui cadastro.",
"timeStamp": 1629227727801,
"links": []
}
Response 400 (Bad Request) - Erros na validação
{
"statusCode": 400,
"data": {
"horas": "Permitido o mínimo de 34 horas por matéria.",
"codigo": "Informe o codigo da matéria",
"frequencia": "Permitido o máximo de 2 vezes ao ano.",
"nome": "Informe o nome da matéria"
},
"timeStamp": 1629224072902,
"links": []
}
GET /materias
vai retornar:
Response 200 (application/json)
{
"statusCode": 200,
"data": [
{
"id": 1,
"nome": "PROGRAMAÇÃO ORIENTADA A OBJETOS",
"horas": 65,
"codigo": "POO",
"frequencia": 1,
"links": [
{
"rel": "self",
"href": "http://localhost:8081/api/v1/materias/1"
},
{
"rel": "UPDATE",
"href": "http://localhost:8081/api/v1/materias"
},
{
"rel": "DELETE",
"href": "http://localhost:8081/api/v1/materias/1"
}
]
},
{
"id": 2,
"nome": "INTRODUÇÃO A LOGICA DE PROGRAMAÇÃO",
"horas": 50,
"codigo": "ILP",
"frequencia": 1,
"links": [
{
"rel": "self",
"href": "http://localhost:8081/api/v1/materias/2"
},
{
"rel": "UPDATE",
"href": "http://localhost:8081/api/v1/materias"
},
{
"rel": "DELETE",
"href": "http://localhost:8081/api/v1/materias/2"
}
]
}
],
"timeStamp": 1629220947193,
"links": [
{
"rel": "self",
"href": "http://localhost:8081/api/v1/materias"
}
]
}
Response 401 (Unauthorized)
GET /materias/horario-minimo/{horas}
vai retornar:
Response 200 (application/json)
{
"statusCode": 200,
"data": [
{
"id": 1,
"nome": "PROGRAMAÇÃO ORIENTADA A OBJETOS",
"horas": 65,
"codigo": "POO",
"frequencia": 1,
"links": [
{
"rel": "self",
"href": "http://localhost:8081/api/v1/materias/1"
},
{
"rel": "UPDATE",
"href": "http://localhost:8081/api/v1/materias"
},
{
"rel": "DELETE",
"href": "http://localhost:8081/api/v1/materias/1"
}
]
}
],
"timeStamp": 1628735814026,
"links": [
{
"rel": "self",
"href": "http://localhost:8081/api/v1/materias"
}
]
}
Response 401 (Unauthorized)
GET /materias/{frequencia}
vai retornar:
Response 200 (application/json)
{
"statusCode": 200,
"data": [
{
"id": 1,
"nome": "PROGRAMAÇÃO ORIENTADA A OBJETOS",
"horas": 65,
"codigo": "POO",
"frequencia": 1,
"links": [
{
"rel": "self",
"href": "http://localhost:8081/api/v1/materias/1"
},
{
"rel": "UPDATE",
"href": "http://localhost:8081/api/v1/materias"
},
{
"rel": "DELETE",
"href": "http://localhost:8081/api/v1/materias/1"
}
]
}
],
"timeStamp": 1628735814026,
"links": [
{
"rel": "self",
"href": "http://localhost:8081/api/v1/materias"
}
]
}
Response 401 (Unauthorized)
GET /materias/{id}
vai retornar:
Response 200 (application/json)
{
"statusCode": 200,
"data": {
"id": 1,
"nome": "PROGRAMAÇÃO ORIENTADA A OBJETOS",
"horas": 65,
"codigo": "POO",
"frequencia": 1
},
"timeStamp": 1628736338954,
"links": [
{
"rel": "self",
"href": "http://localhost:8081/api/v1/materias/1"
},
{
"rel": "GET_ALL",
"href": "http://localhost:8081/api/v1/materias"
},
{
"rel": "UPDATE",
"href": "http://localhost:8081/api/v1/materias"
},
{
"rel": "DELETE",
"href": "http://localhost:8081/api/v1/materias/1"
}
]
}
Response 404 (Not Found) - cadastro inexistente
{
"statusCode": 404,
"data": "Matéria não encontrada.",
"timeStamp": 1629228521823,
"links": []
}
Response 401 (Unauthorized)
PUT /materias
com body:
Request (application/json)
{
"id": 1,
"nome": "PROGRAMAÇÃO ORIENTADA A OBJETOS",
"horas": 70,
"codigo": "POO",
"frequencia": 2
}
Response 200 (application/json)
{
"statusCode": 200,
"data": true,
"timeStamp": 1628736630946,
"links": [
{
"rel": "self",
"href": "http://localhost:8081/api/v1/materias"
},
{
"rel": "UPDATE",
"href": "http://localhost:8081/api/v1/materias"
},
{
"rel": "GET_ALL",
"href": "http://localhost:8081/api/v1/materias"
},
{
"rel": "DELETE",
"href": "http://localhost:8081/api/v1/materias/1"
}
]
}
Response 400 (Bad Request) - Erros na validação
{
"statusCode": 400,
"data": {
"data": "Informe o ID para alterar o cadastro",
"horas": "Permitido o mínimo de 34 horas por matéria.",
"codigo": "Informe o codigo da matéria",
"nome": "Informe o nome da matéria"
},
"timeStamp": 1629227304659,
"links": []
}
Response 401 (Unauthorized)
DELETE /materias/{id}
sem body:
Response 200 (application/json)
{
"statusCode": 200,
"data": true,
"timeStamp": 1628736887404,
"links": [
{
"rel": "self",
"href": "http://localhost:8081/api/v1/materias/1"
},
{
"rel": "GET_ALL",
"href": "http://localhost:8081/api/v1/materias"
}
]
}
Response 404 (Not Found) - cadastro inexistente
{
"statusCode": 404,
"data": "Matéria não encontrada.",
"timeStamp": 1629228521823,
"links": []
}
Response 401 (Unauthorized)
http://localhost:8081/api/api/v1
POST: /cursos
com body:
Request (application/json)
{
"nome": "BACHAREL EM SISTEMAS DE INFORMAÇÃO",
"codigo": "BSI",
"materias": [1]
}
Response 201 (Created)
{
"statusCode": 201,
"data": true,
"timeStamp": 1629220404672,
"links": [
{
"rel": "self",
"href": "http://localhost:8081/api/v1/cursos"
},
{
"rel": "UPDATE",
"href": "http://localhost:8081/api/v1/cursos"
},
{
"rel": "GET_ALL",
"href": "http://localhost:8081/api/v1/cursos"
}
]
}
Response 400 (Bad Request) - Cadastro existente
{
"statusCode": 400,
"data": "curso já possui cadastro.",
"timeStamp": 1629227727801,
"links": []
}
Response 400 (Bad Request) - Erros na validação
{
"statusCode": 400,
"data": {
"codigo": "tamanho deve ser entre 2 e 6",
"nome": "Informe o nome do curso"
},
"timeStamp": 1629228929281,
"links": []
}
Response 401 (Unauthorized)
GET /cursos
vai retornar:
Response 200 (application/json)
{
"statusCode": 200,
"data": [
{
"id": 1,
"nome": "BACHAREL EM SISTEMAS DE INFORMAÇÃO",
"codigo": "BSI",
"materias": [
{
"id": 1,
"nome": "PROGRAMAÇÃO ORIENTADA A OBJETOS",
"horas": 65,
"codigo": "POO",
"frequencia": 1
}
],
"links": [
{
"rel": "self",
"href": "http://localhost:8081/api/v1/cursos/1"
},
{
"rel": "UPDATE",
"href": "http://localhost:8081/api/v1/cursos"
},
{
"rel": "DELETE",
"href": "http://localhost:8081/api/v1/cursos/1"
}
]
}
],
"timeStamp": 1629220661293,
"links": [
{
"rel": "self",
"href": "http://localhost:8081/api/v1/cursos"
}
]
}
Response 401 (Unauthorized)
GET /cursos/{id}
vai retornar:
Response 200 (application/json)
{
"statusCode": 200,
"data": {
"id": 1,
"nome": "BACHAREL EM SISTEMAS DE INFORMAÇÃO",
"codigo": "BSI",
"materias": [
{
"id": 1,
"nome": "PROGRAMAÇÃO ORIENTADA A OBJETOS",
"horas": 65,
"codigo": "POO",
"frequencia": 1
}
],
"links": []
},
"timeStamp": 1629220693487,
"links": [
{
"rel": "self",
"href": "http://localhost:8081/api/v1/cursos/1"
},
{
"rel": "UPDATE",
"href": "http://localhost:8081/api/v1/cursos"
},
{
"rel": "DELETE",
"href": "http://localhost:8081/api/v1/cursos/1"
}
]
}
Response 404 (Not Found)
{
"statusCode": 404,
"data": "Curso não encontrado.",
"timeStamp": 1629228521823,
"links": []
}
Response 401 (Unauthorized)
GET /cursos/codigo-curso?codigo={codigo}
vai retornar:
Response 200 (application/json)
{
"statusCode": 200,
"data": {
"id": 1,
"nome": "BACHAREL EM SISTEMAS DE INFORMAÇÃO",
"codigo": "BSI",
"materias": [
{
"id": 1,
"nome": "PROGRAMAÇÃO ORIENTADA A OBJETOS",
"horas": 65,
"codigo": "POO",
"frequencia": 1
}
],
"links": []
},
"timeStamp": 1629220693487,
"links": [
{
"rel": "self",
"href": "http://localhost:8081/api/v1/cursos/1"
},
{
"rel": "UPDATE",
"href": "http://localhost:8081/api/v1/cursos"
},
{
"rel": "DELETE",
"href": "http://localhost:8081/api/v1/cursos/1"
}
]
}
Response 404 (Not Found)
{
"statusCode": 404,
"data": "Curso não encontrado.",
"timeStamp": 1629228521823,
"links": []
}
Response 401 (Unauthorized)
PUT /cursos
com body:
Request (application/json)
{
"id": 1,
"nome": "BACHAREL EM SISTEMAS DE INFORMAÇÃO",
"codigo": "BSI",
"materias": [1,2]
}
Response 200 (application/json)
{
"statusCode": 200,
"data": true,
"timeStamp": 1629221204249,
"links": [
{
"rel": "self",
"href": "http://localhost:8081/api/v1/cursos"
},
{
"rel": "GET_ALL",
"href": "http://localhost:8081/api/v1/cursos"
},
{
"rel": "DELETE",
"href": "http://localhost:8081/api/v1/cursos/1"
}
]
}
Response 400 (Bad Request) - Erros na validação
{
"statusCode": 400,
"data": {
"data": "Informe o ID para alterar o cadastro",
"horas": "Permitido o mínimo de 34 horas por matéria.",
"codigo": "Informe o codigo da matéria",
"nome": "Informe o nome da matéria"
},
"timeStamp": 1629227304659,
"links": []
}
Response 404 (Not Found)
{
"statusCode": 404,
"data": "Curso não encontrado.",
"timeStamp": 1629228521823,
"links": []
}
Response 401 (Unauthorized)
DELETE /cursos/{id}
sem body:
Response 200 (application/json)
{
"statusCode": 200,
"data": true,
"timeStamp": 1629221293353,
"links": [
{
"rel": "self",
"href": "http://localhost:8081/api/v1/cursos/1"
},
{
"rel": "GET_ALL",
"href": "http://localhost:8081/api/v1/cursos"
}
]
}
Response 404 (Not Found)
{
"statusCode": 404,
"data": "Curso não encontrado.",
"timeStamp": 1629228521823,
"links": []
}
Response 401 (Unauthorized)
http://localhost:8081/api/swagger-ui.html
git checkout -b my-awesome-feature
git commit -m "feature: My awesome feature"
git push origin my-awesome-feature
Caso tenha alguma dúvida confira este guia de como contribuir no GitHub