Ficha dweb2019-e1

Avaliação: Desenvolvimento de Aplicações Web

Desenvolvimento de Aplicações Web (MIEI)

O objectivo principal desta ficha é testar os conhecimentos obtidos durante as aulas no desenvolvimento de aplicações Web e outras tarefas afins.

Os resultados finais deverão ser enviados ao docente da seguinte forma:

  • Enviar por email para: jcr@di.uminho.pt
  • Colocar no subject/assunto: DWEB2018::Teste::Axxxxx
  • Em que Axxxxx corresponde ao número do aluno;
  • Enviar um ZIP com a resolução. Esse ZIP deverá conter um PR (project record/manifesto) que descreve o que se fez e lista os ficheiros que constituem a solução (à semelhança dos trabalhos de casa);
  • Para os exercícios em que recorrer a mais do que um servidor, por exemplo, servidor node e servidor Mongo, explique como se pode colocar a funcionar a sua App;
  • No fim, confirme com o docente que tudo foi enviado e recebido como deve ser.


A CLAV é uma plataforma em desenvolvimento no DI/UM em parceria e sob encomenda da Direção Geral do Livro, Arquivos e Bibliotecas (DGLAB) que visa a classificação e a avaliação de toda a documentação circulante na administração pública portuguesa.

Uma das faces visíveis do projeto é o catálogo dos processos da administração pública portuguesa, designado por Lista Consolidada.

Já se encontra disponível para consulta online: site de teste .

É sobre este catálogo que irás desenvolver este exercício.

A API de dados disponível contem entre outras as seguintes possibilidades:

  • GET http://clav-test.di.uminho.pt/api/classes - Devolve uma estratura hierárquica em JSON com a informação base de todas as classes/processos da Lista Consolidada. Note que, os processos correspondem a classes de nível 3 e 4, os níveis 1 e 2 existem para arrumar a case e facilitar o acesso aos processo;
  • GET http://clav-test.di.uminho.pt/api/classes/nivel/3 - Devolve uma lista em JSON com a informação base de todos os processos;
  • GET http://clav-test.di.uminho.pt/api/classes/nivel/1 - Devolve uma lista em JSON dos primeiros níveis;
  • GET http://clav-test.di.uminho.pt/api/classes/nivel/2 - Devolve uma lista em JSON dos segundos níveis;
  • GET http://clav-test.di.uminho.pt/api/classes/lista - Devolve uma lista em JSON de todas as classes (linearização da árvore inicial);
  • GET http://clav-test.di.uminho.pt/api/classes/c100.10.001 - Devolve em JSON a informação base da classe com código: c100.10.001;
  • GET http://clav-test.di.uminho.pt/api/classes/c100.20/descendencia - Devolve uma lista em JSON das classes filhas da classe passada no pedido, neste caso, C100.20;

Desenvolve então as seguintes alíneas:

  1. Testa a API de dados com o Postman e dá resposta às seguintes questões:
    • Quantos processos (nível 3) e quais são (obtem uma lista em JSON; podes concatenar sublistas invocando várias queries), existem na descendência da classe 200?
    • Quantos subprocessos existem? (classes de nível 4)
    • Quantos processos (classes de nível 3) se encontram subdivididos em níveis 4?

Depois deste "aquecimento", desenvolve uma aplicação em nodejs que permita navegar nesta estrutura de classes. :

  1. Na página inicial, para além de um título e outra informação de contexto, deverá aparecer a lista de classes de nível 1;
  2. Todos os campos de informação com códigos de classes devem ser transformados em links que realizam pedidos à tua aplicação de nova página;
  3. Na página de cada classe, deve ser mostrada a informação base da classe e uma lista dos seus descendentes caso existam;
  4. Em todas as páginas deverá haver um link para voltar à página inicial;
  5. Usa a tua imaginação e criatividade...