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:

Todos os dados disponíveis na base de dados
Lugares ocupados

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:

http://localhost:3030/api-docs

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/#/

Computer science student