O objectivo principal desta ficha é testar os conhecimentos obtidos durante as aulas no desenvolvimento de aplicações Web e outras tarefas afins.
Antes de começares, lê atentamente até ao fim para ficares com uma percepção do todo que se pretende. Vais ver que tomarás decisões mais acertadas depois de uma leitura completa.
Os resultados finais deverão ser enviados ao docente da seguinte forma:
jcr@di.uminho.pt
;RPCW2023::Normal::Axxxxx
ou RPCW2023::Normal::PGxxxxx
, em que Axxxxx
ou PGxxxxx
corresponde ao número do aluno;RPCW2023-Normal
;PR.txt
, contendo uma descrição de como fez a persistência de dados, do setup de bases de dados, respostas textuais pedidas, instruções de como executar as aplicações desenvolvidas, etc...ex1
, onde colocarão a aplicação desenvolvida para responder ao primeiro exercício e, ex2
, onde colocarão a aplicação desenvolvida para responder ao segundo exercício.Os exercícios que envolvam criação de rotas serão testados com as rotas no enunciado, qualquer rota que seja diferente da pedida será avaliada com 0.
Recursos para a realização da prova:
dados.gov.pt
), este ficheiro tem a seguinte estrutura:[
{
"NomeInstituicao": "Academia Nacional Superior de Orquestra",
"NIPCInstituicao": 502741481,
"NomeTitularContrato": "Yan Mikirtumov",
"CienciaID": "5210-901B-8519",
"ORCID": "0000-0002-5750-3739",
"CienciaVitae": "cienciavitae.pt/portal/5210-901B-8519",
"Carreira_RPN": "Docente - Politécnico",
"Categoria_RPN": "Professor adjunto",
"Vinculo_RPN": "Outro",
"RegimePrestacaoServico": "Tempo parcial",
"DataInicioContrato": "01/01/2021",
"DataFimContrato": "31/12/2024",
"ETIremunerado": 0.5,
"ProcedimentoVinculacao": "Nomeação ou designação",
"AreasInvestigacao": "Artes",
"NivelFormação": "Doutor",
"InstituicaoEnsino": "Universidade de Évora",
"PaisInstituição": "Portugal",
"AnoDiploma": 2013,
"Curso": "Música e Musicologia",
"AreaCNAEF": "Música e artes do espetáculo",
"AreaFORD": "Artes",
"ProvasAgregacao": 0,
"TituloEspecialista": 0,
"ProvasCoordenacao": 0,
"ProvasAptidao": 0
},
...
]
Neste exercício, irás implementar uma API de dados sobre o dataset fornecido. Encontra-se dividido em 3 partes.
Realiza as seguintes tarefas sem alterares os identificadores da base de dados e coleção fornecidos:
-d scienceJobs
-c contracts
Especifica queries em MongoDB para responder às seguintes questões:
AreaCNAEF
)Desenvolve agora uma API de dados, que responde na porta 15015 e que responda às seguintes rotas/pedidos:
GET /contracts
: devolve uma lista com todos os contratos;GET /contracts/:id
: devolve o contrato com identificador id
;GET /contracts?year=YYYY
: devolve a lista dos contratos realizados durante o ano YYYY
;GET /contracts?inst=AAA
: devolve a lista dos contratos realizados pela instituição contratante AAA
;GET /contracts/courses
: devolve a lista dos cursos dos contratados (sem repetições);GET /contracts/institutions
: devolve a lista das instituições contratantes (sem repetições);POST /contracts
: acrescenta um contrato novo à BD;DELETE /contracts/:id
: elimina da BD o contrato com o identificador id
.Antes de prosseguires, testa as rotas realizadas com o Postman ou similar.
Tendo a API desenvolvida, desenvolve agora um novo serviço, que responde na porta 15016 e que irá responder da seguinte forma:
Se colocares no browser o endereço http://localhost:15016
deverás obter a página principal constituída por:
_id
, DataInicioContrato
, DataFimContrato
, NomeInstituicao
e AreasInvestigacao
;_id
deverá ser um link para a página do contrato com esse identificador;NomeInstituicao
deverá ser um link para a página dessa instituição.Se colocares no browser o endereço http://localhost:15016/:id
deverás obter a página do contrato com o identificador passado na rota:
Se colocares no browser o endereço http://localhost:15016/inst/:nipc
deverás obter a página da instituição cujo NIPCInstituicao
seja igual ao parâmetro passado na rota:
Bom trabalho e boa sorte jcr