O objectivo principal deste teste é avaliar 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 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:
- Distribuição Arbórea nalgumas freguesias portuguesas (dataset em JSON obtido de
dados.gov.pt
), este ficheiro tem a seguinte estrutura:
[
{
"Id": 20615557,
"Número de Registo": 3,
"Código de rua": 1685467,
"Rua": "Rua Júlio Dinis",
"Local": "Zambujeiro",
"Freguesia": "Alcabideche",
"Espécie": "pinheiro manso",
"Nome Científico": "Pinus pinea",
"Origem": "",
"Data de Plantação": "",
"Estado": "Adulto",
"Caldeira": "Sim",
"Tutor": "Sim",
"Implantação": "Arruamento",
"Gestor": "DGEV",
"Data de actualização": "23/07/2021 19:50:54",
"Número de intervenções": 6
},
...
]
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 nomes da base de dados e coleção fornecidos:
- Analisa o dataset fornecido;
- Introduz as alterações que achares necessárias no dataset;
- Importa-o numa base de dados em MongoDB com os seguintes parâmetros:
- database:
-d plantas
- collection:
-c plantas
- database:
- Testa se a importação correu bem.
Especifica queries em MongoDB para responder às seguintes questões:
- Quantos registos estão na base de dados;
- Quantos registos de plantação se encontram na freguesia "São Domingos de Rana"?
- Qual a lista de freguesias (ordenada alfabeticamente e sem repetições)?
- Qual a distribuição dos registos por freguesia (quantos registos em cada freguesia)
- Qual a distribuição dos registos por espécie?
Desenvolve agora uma API de dados, que responde na porta 15030 e que responda às seguintes rotas/pedidos:
GET /plantas
: devolve uma lista com todos os registos;GET /plantas/:id
: devolve o registo com identificadorid
;GET /plantas?especie=EEEE
: devolve a lista dos registos correspondentes à espécieEEEE
;GET /plantas?implant=AAA
: devolve a lista dos registos com implantaçãoAAA
;GET /plantas/freguesias
: devolve a lista de freguesias ordenada alfabeticamente e sem repetições;GET /plantas/especies
: devolve a lista das espécies vegetais ordenada alfabeticamente e sem repetições;POST /plantas
: acrescenta um registo novo à BD;DELETE /plantas/:id
: elimina da BD o registo com o identificadorid
.
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 15031 e que irá responder da seguinte forma:
-
Se colocares no browser o endereço
http://localhost:15031
deverás obter a página principal constituída por:- Um cabeçalho com metainformação à tua escolha;
- Uma tabela contendo a lista de registos, um por linha, com os campos:
_id
,Freguesia
,Espécie
,Estado
eNúmero de intervenções
; - O campo
_id
deverá ser um link para a página do contrato com esse identificador; - O campo
Espécie
deverá ser um link para a página dessa espécie.
-
Se colocares no browser o endereço
http://localhost:15031/:id
deverás obter a página do registo com o identificador passado na rota:- Esta página deverá conter todos os campos do registo e um link para voltar à página principal.
-
Se colocares no browser o endereço
http://localhost:15031/especies/:id
deverás obter a página da espécie cujo nome corresponde ao parâmetro passado na rota (como fazes a associação do parâmetro à espécie é contigo, usa a imaginação):- Na página de cada espécie deverá constar o nome e a designação científica da espécie e uma tabela com a lista de registos dessa espécie (tabela com estrutura semelhante à da página principal).
Bom trabalho e boa sorte jcr