- Executando todos os testes
- Executando o projeto com Docker
- Executando o projeto localmente
- Tecnologias
- Recursos
- Swagger
- Contribuir
- Autor
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": [] }
-
Response 401 (Unauthorized)
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)
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
- Faça um fork do projeto.
- Crie uma nova branch com as suas alterações:
git checkout -b my-awesome-feature
- Salve as alterações e crie uma mensagem de commit contando o que você fez:
git commit -m "feature: My awesome feature"
- Envie as suas alterações:
git push origin my-awesome-feature
Caso tenha alguma dúvida confira este guia de como contribuir no GitHub
Raphael Feitosa 🚀