Como construir uma REST API NodeJS com Express e MongoDB
Neste tutorial vamos aprender a fazer uma REST API relativamente a registo de voluntariado em Portugal.
Pre-Requisitos
Existem alguns pre-requisito para se poder realizar este projeto. É necessário ter o NodeJS instalado na máquinas assim como as aplicações:
Inicio da Aplicação
O primeiro passo para a criação da nossa criação é criar uma conta no MongoAtlas se ainda não tens uma podes criar uma conta aqui.
Setup MongoDB Atlas Cluster
Vamos criar uma base de dados para podermos inserir e armazenar os nossos dados. Primeiro iremos criar o nosso projeto onde iremos trabalhar:
Uma vez criado o nosso projeto podemos ver o dashboard onde podemos criar clusters.
Vamos então criar um novo cluster chamado Voluntariado-Cluster e selecionar todos os detalhes como mostra a figura:
Conseguimos então ver o nosso Cluster criado:
Criação da Base de Dados
Criamos então a cluster e agora é tempo de criarmos a base de dados. Clica em collections para criar a base de dados.
De seguida vamos clicar em Add My Own Data
Eu dei o nome da nossa base de dados voluntariado.
Em baixo vê se o dashboard criado. Temos agora uma base de dados com uma coleção vazia.
Vamos inserir o nosso primeiro documento clicando em insert document
Criação da Nossa App
Iremos então começar o desenvolvimento da nossa API para isso teremos que instalar algumas dependências no nosso projeto.
Como qualquer projeto começamos com npm init na nossa linha de comandos para a criação do mesmo.
De seguida vamos instalar as seguintes dependências:
- Mongoose
- Express
- Swagger-jsdo
- Swagger-ui-express
- Nodemon
npm install express mongoose swagger-jsdoc@6.1.0 swagger-ui-express nodemon
Uma vez adicionadas as nossa dependências vamos criar a nossa estrutura de pastas e ficheiros.
Começamos pelo nosso ficheiro inicial app.js nele iremos colocar o seguinte código:
Configurar Mongo na nossa Aplicação
Vamos definir a classe de configuração onde ele cria uma conexão com a string da conexão. Estamos a usar o Mongoose para conectarmo nos com o MongoDB para todas as consultas. O Mongoose facilita a interação com o MongoDB. Para isso criamos um ficheiro chamado mongodb.js onde nele têm a conexão ao nosso Atlas.
O mongo URL iremos buscar a partir do Mongo Atlas para isso iremos voltar ao nosso cluster e iremos clicar em connect. Iremos adicioanr o nosso Endereço se quiseres que este projeto seja privado senão simplesmente podemos permitir o acesso por qualquer utlizador. Iremos criar também um username e definir uma password. Não esquecer dessa password pois iremos precisar dela para fazer a conexão à nossa aplicação como mostra a imagem a baixo.
De seguida iremos selecionar a opção Connect your aplication como mostra a imagem:
É necessário colocar a linguagem e a versão correta
Vamos colocar a string de conexão e o nome do banco de dados no mongodb.js. Atenção que se a senha em URL tiver caracteres especiais na senha é preciso que estes sejam codificados.
CRUD Operations
Uma vez criada a ligação à nossa base de dados temos tudo que precisamos para continuar a nossa aplicação e suas respetivas operações. Na nossa pasta de Models iremos criar 2 ficheiros. O modelo de Voluntario.js e Instituicao.js. Ambos os modelos encontram-se abaixo:
Uma vez criados os nossos Schemas dos modelos. Iremos criar as nossa operações. O ficheiro irá se chamar routes.js é boa prática separar o routes do controller com o swagger mas para a simplificação deste projeto iremos colocar tudo num único ficheiro. O código deste ficheiro irá ter as funções CRUD (Create-Read-Update-Delete) encontrando a baixo
Uma vez criados estes ficheiros simplesmente podemos correr a nossa aplicação com npm start
De seguido basta-nos ligar ao https://localhost:3000/api-docs/#/ e ver o resultado da nossa aplicação:
Extra! Colocar a nossa API num servidor cloud (Microsoft Azure)
Uma vez com a nossa aplicação a funcionar iremos colocar-la num servidor cloud neste caso o Microsoft Azure. O primeiro passo é verificar se têm-se a extensão do Azure no nosso VS Code.
De seguida iremos abrir a nossa conta Azure se ainda não tens uma podes criar uma aqui!
Uma vez feito o loggin na nossa conta iremos clicar no botão Criar no Azure Cosmos DB.
Para criação é necessário preencher pelo menos os campos destacados na imagem e escolher a subscrição free e clicar em “Rever + Criar”
Uma vez criado iremos escolher Node.js como nossa plataforma
iremos de seguida substituir esse mesmo código no nosso mongodb.js
Para fazer deploy da app é só preciso carregar na seta azul.
Iremos de seguida selecionar a opção Create new Web app -> Definir o nome da app ->Selecionar a versão do NodeJs (Node 12 neste caso)
E depois podemos ver o resultado com o link: https://voluntariadoapi.azurewebsites.net/api-docs/
E pronto conseguimos fazer de uma forma simplificada uma API utilizando MongoDB, NodeJs e Swagger tudo em uma aplicação. Espero poder ter ajudado. Se algo correu mal o projeto encontra-se em
Obrigada pela atenção e bom trabalho!