API para monitorização de lugares de estacionamento
Este projeto foi realizado por Pedro Antunes e Rui Pissarra.
Para criar esta API de iremos utilizar o node.js para o seu desenvolvimento, utilizaremos o MongoDB para guarda a base de dados, a documentação utilizaremos swagger e colocar a API no Azure.
O primeiro passo será introduzir os seguintes comandos no prompt do nodeJs:
npm init
npm install -save express body-parser mongoose
De seguida iremos introduzir os dados no MongoDb, para tal teremos que criar uma “collection” e introduzimos os seguintes dados:
db.data.insert{“_id”:”6092ae265363951ebe75722b”,”data”:”5–5–2021",”total_de_lugares”:85,”total_lugares_ocupados”:30,”total_de_lugares_livres”:55,”numero_de_motociclos”:3,”numero_de_ligeiros”:24,”numero_de_pesados”:3},{“_id”:”6092ae265363951ebe75722c”,”data”:”6–5–2021",”total_de_lugares”:85,”total_lugares_ocupados”:38,”total_de_lugares_livres”:47,”numero_de_motociclos”:4,”numero_de_ligeiros”:33,”numero_de_pesados”:1},{“_id”:”6092ae265363951ebe75722d”,”data”:”7–5–2021",”total_de_lugares”:85,”total_lugares_ocupados”:59,”total_de_lugares_livres”:26,”numero_de_motociclos”:6,”numero_de_ligeiros”:50,”numero_de_pesados”:3},{“_id”:”6092ae265363951ebe75722e”,”data”:”8–5–2021",”total_de_lugares”:85,”total_lugares_ocupados”:61,”total_de_lugares_livres”:24,”numero_de_motociclos”:11,”numero_de_ligeiros”:48,”numero_de_pesados”:2},{“_id”:”6092ae265363951ebe75722f”,”data”:”9–5–2021",”total_de_lugares”:85,”total_lugares_ocupados”:62,”total_de_lugares_livres”:23,”numero_de_motociclos”:10,”numero_de_ligeiros”:50,”numero_de_pesados”:2},{“_id”:”6092ae265363951ebe757230",”data”:”10–5–2021",”total_de_lugares”:85,”total_lugares_ocupados”:40,”total_de_lugares_livres”:45,”numero_de_motociclos”:2,”numero_de_ligeiros”:38,”numero_de_pesados”:0},{“_id”:”6092ae265363951ebe757231",”data”:”11–5–2021",”total_de_lugares”:85,”total_lugares_ocupados”:45,”total_de_lugares_livres”:40,”numero_de_motociclos”:3,”numero_de_ligeiros”:41,”numero_de_pesados”:1},{“_id”:”6092ae265363951ebe757232",”data”:”12–5–2021",”total_de_lugares”:85,”total_lugares_ocupados”:34,”total_de_lugares_livres”:51,”numero_de_motociclos”:0,”numero_de_ligeiros”:31,”numero_de_pesados”:3},{“_id”:”6092ae265363951ebe757233",”data”:”13–5–2021",”total_de_lugares”:85,”total_lugares_ocupados”:44,”total_de_lugares_livres”:41,”numero_de_motociclos”:1,”numero_de_ligeiros”:41,”numero_de_pesados”:2},{“_id”:”6092ae265363951ebe757234",”data”:”14–5–2021",”total_de_lugares”:85,”total_lugares_ocupados”:79,”total_de_lugares_livres”:6,”numero_de_motociclos”:12,”numero_de_ligeiros”:61,”numero_de_pesados”:6}]}
Tendo a base de dados cria e comos dados inseridos o próximo passo será criar os ficheiros Jasascrip nos quais será assente a nossa API.
Começamos por criar o ficheiro index.js e inserimos o seguinte código:
De seguida iremos criar o ficheiro model.js que terá os campos da nossa base de dados:
De seguida iremos criar o ficheiro routes.js que irá conter os url’s para as funções que posteriormente iremos criar:
O priximo passo será criar o ficheiro controller.js que irá ter as funções da nossa API, iremos criar funções para:
>Mostrar o numero de lugares disponíveis
> Mostrar o numero de lugares ocupados
> Mostrar o numero de veículos ligeiros
>Mostrar o numero de veículos pesados
>Mostrar o numero de motociclos
>Apresentar a data na qual houve mais veículos ligeiros
>Apresentar a data na qual houve menos veículos ligeiros
>Apresentar a media de veículos ligeiros
A base do nosso ficheiro controller terá o seguinte código:
De seguida as funções acima mencionada serão colocados abaixo do código.
Mostrar o numero de lugares disponíveis:
Mostrar o numero de lugares ocupados:
Mostrar o numero de veículos ligeiros:
Mostrar o numero de veículos pesados:
Mostrar o numero de motociclos:
Apresentar a data na qual houve mais veículos ligeiros:
Apresentar a data na qual houve menos veículos ligeiros:
Apresentar a media de veículos ligeiros:
- Nota: esta API contém para cada função o correspondente de veículos ligeiros, para veículos pesados e motociclos.
Tendo a API a feita iremos testar no Postman, para efeitos de demonstração e sendo uma API com varias funções irei apenas mostrar dois prints do Postman:
Com a API testada e a funcionar corretamente iremos agora documentar a API com o Swagger, para tal teremos que instalar a seguinte extensão no prompt do nodeJs:
npm i swagger-ui-express -S
De seguida iremos criar um ficheiro com o node swagger.json no qual ira ter o código para que seja possível criar uma interface utilizando o Swagger.
Para facilitar a criaçao desta interface utilizaremos o https://editor.swagger.io/ com este editor online podemos ver em tempo real a interface que estamos a criar:
Todo o codigo para a criaçao tanto da interface como da API toda esta disponivel no github (link esta no fim da publicação.
Depois de criarmos a interface no site acima referido iremos colocar o mesmo codigo no ficheiro swagger.jason e para vermos se esta a funcionar iremos testar neste link:
O output deverá ser o seguinte:
O proximo passo será colocar a API online, para tal iremos utilizar o plugin Azure App Service no Visual Studio Code.
De seguida instalamos o mesmo.
Ira aparecer na barra lateral do lado direito, de seguida fazemos o login na nossa conta azure (carregando na seta azul):
De seguida vamos escolher um nome para a nossa api na caixa da figura abaixo:
Escolhemos a versão no nodeJs que será Node 4 LTS.
Depois ira aparecer uma janela que nos mostra o link para a nossa API.
No nosso caso será:
https://monitorizacaoestacionamentos.azurewebsites.net/api-docs/#/