项目作者: raphaelfeitosa

项目描述 :
API Restfull responsável pela manutenção curricular
高级语言: Java
项目地址: git://github.com/raphaelfeitosa/api-grade-curricular.git
创建时间: 2021-07-27T00:40:23Z
项目社区:https://github.com/raphaelfeitosa/api-grade-curricular

开源协议:

下载



API Restfull responsável pela manutenção curricular

O que há neste documento

Executando todos os testes

No terminal, navegue até a pasta raiz do projeto e execute

  1. ./mvnw test

no Windows

  1. mvnw.cmd test

Executando o projeto com Docker

No terminal, navegue até a pasta raiz do projeto e execute

  1. docker-compose up --build

Executando o projeto localmente

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

  1. ./mvnw clean install

no Windows

  1. mvnw.cmd clean install

Após a conclusão, execute

  1. ./mvnw spring-boot:run

no Windows

  1. mvnw.cmd spring-boot:run

Tecnologias

As seguintes tecnologias foram usadas na construção do projeto:

Recursos da API v1

Recursos disponíveis para acesso via api: http://localhost:8081/api/v1

  • Rescurso [/materias], Methods: GET, POST, PUT, DELETE

    1. GET: /materias: para listar todas as materias
    2. GET: /materias/frequencia/{id}: para listar todas as materias pela frequencia
    3. GET: /materias/horario-minimo/{horas}: para listar todas as materias pelo horario minimo
    4. GET: /materias/{id}: para listar a materia pelo id
    5. POST: /materias: para cadastrar uma materia
    6. PUT: /materias: para alterar uma materia
    7. DELETE: /materias/{id}: para deletar uma materia
  • Rescurso [/cursos], Methods: GET, POST, PUT, DELETE

    1. GET: /cursos: para listar todos os cursos
    2. GET: /cursos/{id}: para listar o curso pelo id
    3. GET: /cursos/codigo-curso?codigo={codigo}: para listar o curso pelo codigo
    4. POST: /cursos: para cadastrar um curso
    5. PUT: /cursos: para alterar um curso
    6. DELETE: /cursos/{id}: para deletar um curso
  • Autorização para acessar todos os recursos:

    1. Authorization: Basic Auth [Username: root, Password: root]
  • Responses

    | 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).|

MATERIAS

POST: /materias com body:

  • Request (application/json)

    1. {
    2. "nome": "PROGRAMAÇÃO ORIENTADA A OBJETOS",
    3. "codigo": "POO",
    4. "horas": 65,
    5. "frequencia": 1
    6. }
  • Response 201 (Created)

    1. {
    2. "statusCode": 200,
    3. "data": true,
    4. "timeStamp": 1628736630946,
    5. "links": [
    6. {
    7. "rel": "self",
    8. "href": "http://localhost:8081/api/v1/materias"
    9. },
    10. {
    11. "rel": "UPDATE",
    12. "href": "http://localhost:8081/api/v1/materias"
    13. },
    14. {
    15. "rel": "GET_ALL",
    16. "href": "http://localhost:8081/api/v1/materias"
    17. }
    18. ]
    19. }
  • Response 400 (Bad Request) - Cadastro existente

    1. {
    2. "statusCode": 400,
    3. "data": "Matéria já possui cadastro.",
    4. "timeStamp": 1629227727801,
    5. "links": []
    6. }
  • Response 400 (Bad Request) - Erros na validação

    1. {
    2. "statusCode": 400,
    3. "data": {
    4. "horas": "Permitido o mínimo de 34 horas por matéria.",
    5. "codigo": "Informe o codigo da matéria",
    6. "frequencia": "Permitido o máximo de 2 vezes ao ano.",
    7. "nome": "Informe o nome da matéria"
    8. },
    9. "timeStamp": 1629224072902,
    10. "links": []
    11. }
  • Response 401 (Unauthorized)

Obter lista de todas as materias

GET /materias vai retornar:

  • Response 200 (application/json)

    1. {
    2. "statusCode": 200,
    3. "data": [
    4. {
    5. "id": 1,
    6. "nome": "PROGRAMAÇÃO ORIENTADA A OBJETOS",
    7. "horas": 65,
    8. "codigo": "POO",
    9. "frequencia": 1,
    10. "links": [
    11. {
    12. "rel": "self",
    13. "href": "http://localhost:8081/api/v1/materias/1"
    14. },
    15. {
    16. "rel": "UPDATE",
    17. "href": "http://localhost:8081/api/v1/materias"
    18. },
    19. {
    20. "rel": "DELETE",
    21. "href": "http://localhost:8081/api/v1/materias/1"
    22. }
    23. ]
    24. },
    25. {
    26. "id": 2,
    27. "nome": "INTRODUÇÃO A LOGICA DE PROGRAMAÇÃO",
    28. "horas": 50,
    29. "codigo": "ILP",
    30. "frequencia": 1,
    31. "links": [
    32. {
    33. "rel": "self",
    34. "href": "http://localhost:8081/api/v1/materias/2"
    35. },
    36. {
    37. "rel": "UPDATE",
    38. "href": "http://localhost:8081/api/v1/materias"
    39. },
    40. {
    41. "rel": "DELETE",
    42. "href": "http://localhost:8081/api/v1/materias/2"
    43. }
    44. ]
    45. }
    46. ],
    47. "timeStamp": 1629220947193,
    48. "links": [
    49. {
    50. "rel": "self",
    51. "href": "http://localhost:8081/api/v1/materias"
    52. }
    53. ]
    54. }
  • Response 401 (Unauthorized)

Obter lista de todas as materias por horario minimo

GET /materias/horario-minimo/{horas} vai retornar:

  • Response 200 (application/json)

    1. {
    2. "statusCode": 200,
    3. "data": [
    4. {
    5. "id": 1,
    6. "nome": "PROGRAMAÇÃO ORIENTADA A OBJETOS",
    7. "horas": 65,
    8. "codigo": "POO",
    9. "frequencia": 1,
    10. "links": [
    11. {
    12. "rel": "self",
    13. "href": "http://localhost:8081/api/v1/materias/1"
    14. },
    15. {
    16. "rel": "UPDATE",
    17. "href": "http://localhost:8081/api/v1/materias"
    18. },
    19. {
    20. "rel": "DELETE",
    21. "href": "http://localhost:8081/api/v1/materias/1"
    22. }
    23. ]
    24. }
    25. ],
    26. "timeStamp": 1628735814026,
    27. "links": [
    28. {
    29. "rel": "self",
    30. "href": "http://localhost:8081/api/v1/materias"
    31. }
    32. ]
    33. }
  • Response 401 (Unauthorized)

Obter lista de todas as materias por frequência

GET /materias/{frequencia} vai retornar:

  • Response 200 (application/json)

    1. {
    2. "statusCode": 200,
    3. "data": [
    4. {
    5. "id": 1,
    6. "nome": "PROGRAMAÇÃO ORIENTADA A OBJETOS",
    7. "horas": 65,
    8. "codigo": "POO",
    9. "frequencia": 1,
    10. "links": [
    11. {
    12. "rel": "self",
    13. "href": "http://localhost:8081/api/v1/materias/1"
    14. },
    15. {
    16. "rel": "UPDATE",
    17. "href": "http://localhost:8081/api/v1/materias"
    18. },
    19. {
    20. "rel": "DELETE",
    21. "href": "http://localhost:8081/api/v1/materias/1"
    22. }
    23. ]
    24. }
    25. ],
    26. "timeStamp": 1628735814026,
    27. "links": [
    28. {
    29. "rel": "self",
    30. "href": "http://localhost:8081/api/v1/materias"
    31. }
    32. ]
    33. }
  • Response 401 (Unauthorized)

Consultar máteria por id

GET /materias/{id} vai retornar:

  • Response 200 (application/json)

    1. {
    2. "statusCode": 200,
    3. "data": {
    4. "id": 1,
    5. "nome": "PROGRAMAÇÃO ORIENTADA A OBJETOS",
    6. "horas": 65,
    7. "codigo": "POO",
    8. "frequencia": 1
    9. },
    10. "timeStamp": 1628736338954,
    11. "links": [
    12. {
    13. "rel": "self",
    14. "href": "http://localhost:8081/api/v1/materias/1"
    15. },
    16. {
    17. "rel": "GET_ALL",
    18. "href": "http://localhost:8081/api/v1/materias"
    19. },
    20. {
    21. "rel": "UPDATE",
    22. "href": "http://localhost:8081/api/v1/materias"
    23. },
    24. {
    25. "rel": "DELETE",
    26. "href": "http://localhost:8081/api/v1/materias/1"
    27. }
    28. ]
    29. }
  • Response 404 (Not Found) - cadastro inexistente

    1. {
    2. "statusCode": 404,
    3. "data": "Matéria não encontrada.",
    4. "timeStamp": 1629228521823,
    5. "links": []
    6. }
  • Response 401 (Unauthorized)

Alterar materia

PUT /materias com body:

  • Request (application/json)

    1. {
    2. "id": 1,
    3. "nome": "PROGRAMAÇÃO ORIENTADA A OBJETOS",
    4. "horas": 70,
    5. "codigo": "POO",
    6. "frequencia": 2
    7. }
  • Response 200 (application/json)

    1. {
    2. "statusCode": 200,
    3. "data": true,
    4. "timeStamp": 1628736630946,
    5. "links": [
    6. {
    7. "rel": "self",
    8. "href": "http://localhost:8081/api/v1/materias"
    9. },
    10. {
    11. "rel": "UPDATE",
    12. "href": "http://localhost:8081/api/v1/materias"
    13. },
    14. {
    15. "rel": "GET_ALL",
    16. "href": "http://localhost:8081/api/v1/materias"
    17. },
    18. {
    19. "rel": "DELETE",
    20. "href": "http://localhost:8081/api/v1/materias/1"
    21. }
    22. ]
    23. }
  • Response 400 (Bad Request) - Erros na validação

    1. {
    2. "statusCode": 400,
    3. "data": {
    4. "data": "Informe o ID para alterar o cadastro",
    5. "horas": "Permitido o mínimo de 34 horas por matéria.",
    6. "codigo": "Informe o codigo da matéria",
    7. "nome": "Informe o nome da matéria"
    8. },
    9. "timeStamp": 1629227304659,
    10. "links": []
    11. }
  • Response 401 (Unauthorized)

Excluir materia por id

DELETE /materias/{id} sem body:

  • Response 200 (application/json)

    1. {
    2. "statusCode": 200,
    3. "data": true,
    4. "timeStamp": 1628736887404,
    5. "links": [
    6. {
    7. "rel": "self",
    8. "href": "http://localhost:8081/api/v1/materias/1"
    9. },
    10. {
    11. "rel": "GET_ALL",
    12. "href": "http://localhost:8081/api/v1/materias"
    13. }
    14. ]
    15. }
  • Response 404 (Not Found) - cadastro inexistente

    1. {
    2. "statusCode": 404,
    3. "data": "Matéria não encontrada.",
    4. "timeStamp": 1629228521823,
    5. "links": []
    6. }
  • Response 401 (Unauthorized)

CURSOS http://localhost:8081/api/api/v1

POST: /cursos com body:

  • Request (application/json)

    1. {
    2. "nome": "BACHAREL EM SISTEMAS DE INFORMAÇÃO",
    3. "codigo": "BSI",
    4. "materias": [1]
    5. }
  • Response 201 (Created)

    1. {
    2. "statusCode": 201,
    3. "data": true,
    4. "timeStamp": 1629220404672,
    5. "links": [
    6. {
    7. "rel": "self",
    8. "href": "http://localhost:8081/api/v1/cursos"
    9. },
    10. {
    11. "rel": "UPDATE",
    12. "href": "http://localhost:8081/api/v1/cursos"
    13. },
    14. {
    15. "rel": "GET_ALL",
    16. "href": "http://localhost:8081/api/v1/cursos"
    17. }
    18. ]
    19. }
  • Response 400 (Bad Request) - Cadastro existente

    1. {
    2. "statusCode": 400,
    3. "data": "curso já possui cadastro.",
    4. "timeStamp": 1629227727801,
    5. "links": []
    6. }
  • Response 400 (Bad Request) - Erros na validação

    1. {
    2. "statusCode": 400,
    3. "data": {
    4. "codigo": "tamanho deve ser entre 2 e 6",
    5. "nome": "Informe o nome do curso"
    6. },
    7. "timeStamp": 1629228929281,
    8. "links": []
    9. }
  • Response 401 (Unauthorized)

Obter lista de todos os cursos

GET /cursos vai retornar:

  • Response 200 (application/json)

    1. {
    2. "statusCode": 200,
    3. "data": [
    4. {
    5. "id": 1,
    6. "nome": "BACHAREL EM SISTEMAS DE INFORMAÇÃO",
    7. "codigo": "BSI",
    8. "materias": [
    9. {
    10. "id": 1,
    11. "nome": "PROGRAMAÇÃO ORIENTADA A OBJETOS",
    12. "horas": 65,
    13. "codigo": "POO",
    14. "frequencia": 1
    15. }
    16. ],
    17. "links": [
    18. {
    19. "rel": "self",
    20. "href": "http://localhost:8081/api/v1/cursos/1"
    21. },
    22. {
    23. "rel": "UPDATE",
    24. "href": "http://localhost:8081/api/v1/cursos"
    25. },
    26. {
    27. "rel": "DELETE",
    28. "href": "http://localhost:8081/api/v1/cursos/1"
    29. }
    30. ]
    31. }
    32. ],
    33. "timeStamp": 1629220661293,
    34. "links": [
    35. {
    36. "rel": "self",
    37. "href": "http://localhost:8081/api/v1/cursos"
    38. }
    39. ]
    40. }
  • Response 401 (Unauthorized)

Consultar curso por id

GET /cursos/{id} vai retornar:

  • Response 200 (application/json)

    1. {
    2. "statusCode": 200,
    3. "data": {
    4. "id": 1,
    5. "nome": "BACHAREL EM SISTEMAS DE INFORMAÇÃO",
    6. "codigo": "BSI",
    7. "materias": [
    8. {
    9. "id": 1,
    10. "nome": "PROGRAMAÇÃO ORIENTADA A OBJETOS",
    11. "horas": 65,
    12. "codigo": "POO",
    13. "frequencia": 1
    14. }
    15. ],
    16. "links": []
    17. },
    18. "timeStamp": 1629220693487,
    19. "links": [
    20. {
    21. "rel": "self",
    22. "href": "http://localhost:8081/api/v1/cursos/1"
    23. },
    24. {
    25. "rel": "UPDATE",
    26. "href": "http://localhost:8081/api/v1/cursos"
    27. },
    28. {
    29. "rel": "DELETE",
    30. "href": "http://localhost:8081/api/v1/cursos/1"
    31. }
    32. ]
    33. }
  • Response 404 (Not Found)

    1. {
    2. "statusCode": 404,
    3. "data": "Curso não encontrado.",
    4. "timeStamp": 1629228521823,
    5. "links": []
    6. }
  • Response 401 (Unauthorized)

Consultar curso por codigo

GET /cursos/codigo-curso?codigo={codigo} vai retornar:

  • Response 200 (application/json)

    1. {
    2. "statusCode": 200,
    3. "data": {
    4. "id": 1,
    5. "nome": "BACHAREL EM SISTEMAS DE INFORMAÇÃO",
    6. "codigo": "BSI",
    7. "materias": [
    8. {
    9. "id": 1,
    10. "nome": "PROGRAMAÇÃO ORIENTADA A OBJETOS",
    11. "horas": 65,
    12. "codigo": "POO",
    13. "frequencia": 1
    14. }
    15. ],
    16. "links": []
    17. },
    18. "timeStamp": 1629220693487,
    19. "links": [
    20. {
    21. "rel": "self",
    22. "href": "http://localhost:8081/api/v1/cursos/1"
    23. },
    24. {
    25. "rel": "UPDATE",
    26. "href": "http://localhost:8081/api/v1/cursos"
    27. },
    28. {
    29. "rel": "DELETE",
    30. "href": "http://localhost:8081/api/v1/cursos/1"
    31. }
    32. ]
    33. }
  • Response 404 (Not Found)

    1. {
    2. "statusCode": 404,
    3. "data": "Curso não encontrado.",
    4. "timeStamp": 1629228521823,
    5. "links": []
    6. }
  • Response 401 (Unauthorized)

Alterar curso

PUT /cursos com body:

  • Request (application/json)

    1. {
    2. "id": 1,
    3. "nome": "BACHAREL EM SISTEMAS DE INFORMAÇÃO",
    4. "codigo": "BSI",
    5. "materias": [1,2]
    6. }
  • Response 200 (application/json)

    1. {
    2. "statusCode": 200,
    3. "data": true,
    4. "timeStamp": 1629221204249,
    5. "links": [
    6. {
    7. "rel": "self",
    8. "href": "http://localhost:8081/api/v1/cursos"
    9. },
    10. {
    11. "rel": "GET_ALL",
    12. "href": "http://localhost:8081/api/v1/cursos"
    13. },
    14. {
    15. "rel": "DELETE",
    16. "href": "http://localhost:8081/api/v1/cursos/1"
    17. }
    18. ]
    19. }
  • Response 400 (Bad Request) - Erros na validação

    1. {
    2. "statusCode": 400,
    3. "data": {
    4. "data": "Informe o ID para alterar o cadastro",
    5. "horas": "Permitido o mínimo de 34 horas por matéria.",
    6. "codigo": "Informe o codigo da matéria",
    7. "nome": "Informe o nome da matéria"
    8. },
    9. "timeStamp": 1629227304659,
    10. "links": []
    11. }
  • Response 404 (Not Found)

    1. {
    2. "statusCode": 404,
    3. "data": "Curso não encontrado.",
    4. "timeStamp": 1629228521823,
    5. "links": []
    6. }
  • Response 401 (Unauthorized)

Excluir curso

DELETE /cursos/{id} sem body:

  • Response 200 (application/json)

    1. {
    2. "statusCode": 200,
    3. "data": true,
    4. "timeStamp": 1629221293353,
    5. "links": [
    6. {
    7. "rel": "self",
    8. "href": "http://localhost:8081/api/v1/cursos/1"
    9. },
    10. {
    11. "rel": "GET_ALL",
    12. "href": "http://localhost:8081/api/v1/cursos"
    13. }
    14. ]
    15. }
  • Response 404 (Not Found)

    1. {
    2. "statusCode": 404,
    3. "data": "Curso não encontrado.",
    4. "timeStamp": 1629228521823,
    5. "links": []
    6. }
  • Response 401 (Unauthorized)

Swagger

http://localhost:8081/api/swagger-ui.html

Materia


Vendas

Curso


Vendas

Como contribuir para o projeto

  1. Faça um fork do projeto.
  2. Crie uma nova branch com as suas alterações: git checkout -b my-awesome-feature
  3. Salve as alterações e crie uma mensagem de commit contando o que você fez: git commit -m "feature: My awesome feature"
  4. Envie as suas alterações: git push origin my-awesome-feature

    Caso tenha alguma dúvida confira este guia de como contribuir no GitHub

Autor


Raphael Feitosa 🚀



⬆ Voltar ao topo