Tutorial Node.js: REST API (calculadora simples)
O Node.js é uma das linguagens de programação mais versáteis da atualidade. Com a possibilidade de adicionar pacotes (packages), facilmente construímos aplicações e serviços poderosos.
Hoje vamos aprender como criar uma API com funções básicas de calculadora.
Além das características que já revelamos, é importante destacar ainda que o Node.js é orientado a eventos de I/O uma vez que tem disponíveis vários módulos que permitem trabalhar com recursos de I/O no servidor.
O Node.js tem também suporte para vários protocolos como, por exemplo, HTTP, HTTPS, DNS, WebSockets, etc e segue o modelo não bloqueante, ou seja, os pedidos serão feitos e entregues quando estiverem prontos. …
O que significa CRUD?
CRUD são as siglas para Create, Read, Update e Delete. Estas são as quatro operações básicas utilizadas em bases de dados relacionais (RDBMS).
A abreviação CRUD mapeada para o padrão ISO/SQL:
- Create — INSERT
- Read — SELECT
- Update — UPDATE
- Delete — DELETE
Arquitetura REST
REST — REpresentational State Transfer é um modelo de arquitetura que usa o protocolo HTTP para comunicação para GET, POST, PUT e DELETE. Existem várias representações para apresentar um recurso como, por exemplo, XML, JSON, sendo que este último é o mais usado. Saber mais aqui.
Vamos começar a programar uma API
Passo 1) Instalar o Node.js no Ubuntu e derivados
sudo apt-get update sudo apt-get install nodejs |
Passo 2) Criar diretório para projeto
mkdir calculadora cd calculadora |
Passo 3) Iniciar o projeto
npm init |
No final será criado o ficheiro package.json. Este ficheiro guarda informações sobre o projeto e também sobre as dependências (pacotes) do mesmo.
Passo 4) Instalação de pacotes necessários
- hapi — framework para criação de apps web.
npm install — save hapi |
Passo 5) Criar servidor (com Node.js)
Para começar vamos criar o ficheiro index.js (indicado no package.json)
touch index.js |
Dentro do nosso ficheiro, associamos as dependências instaladas anteriormente (hapi) e inicializamos aapp.
//Framework hapi.js const Hapi = require('hapi'); // Máquina e Porto Lógico const host = 'localhost'; const port = 3000; // Criação do Servidor const server = Hapi.Server({ host: host, port: port }); // Iniciar servidor const init = async () => { await server.start(); console.log("Server up no porto: " + port); } //Inicialização da App init(); |
Para iniciar a app devem executar o comando:
node index.js |
Vamos agora criar um about da app. Para tal adicionem o seguinte código a seguir ao init
server.route({ method: 'GET', path: '/calculadora/about', handler: function (request, h) { var data = { msg: 'API Calculadora' }; return data; } }); |
Façam o teste via POSTMAN.
Organização da Aplicação (MVC)
A nossa aplicação deverá seguir o “design” MCV. M de Model (código para o nosso modelo de base de dados), V de View (layout) e C de controllers (parte lógica da app (Como a app lida com as solicitações recebidas e as respostas enviadas). Existem também as Routes que indicam ao cliente (browser ou app mobile) qual o controller a usar, de acordo com o url/path solicitado.
Criar Routes
$ mkdir routes $ cd routes $ touch routes.js |
No ficheiro index.js, antes do init(), devem invocar o ficheiro de routes.
const Hapi = require('hapi'); const host = 'localhost'; const port = 3000; const server = Hapi.Server({ host: host, port: port }); const init = async () => { await server.start(); console.log("Server UP no porto: " + port); } //Definir routes require('./routes/routes')(server); init(); |
Ficheiro routes completo com as operações básicas da calculadora.
Depois de criada a app e colocada em execução, podemos facilmente testar todas as operações via browser ou POSTMAN.
E está feito! Agora basta que haja ideias para desenvolver APIs com outros propósitos. Como viram a programação nem é assim tão difícil e com a vantagem do código poder ser usada em qualquer app para qualquer dispositivo.
Leia também...
Este artigo tem mais de um ano
É um bom tutorial com alternativa a express -> Hapi mas gosto mais de Koa js (do mesmo autor de express),que tem uma sintaxe moderna.
Contudo colocar num servicço de hosting, na vida real mais complicado pelo preço, a não ser que se seja dono de uma vps ou realmete pretenda pagar caso queira free hosting, boa sorte em encontrar.
Por isso sugeria um tuorial de uma API com PHP com ou sem framework.
Caso queira usar uma Framework PHP para API sugiro Symfony 5 , já que consegue encontrar mais facilmente free hosting com PHP + MYSQL, etc.
Francamente… Logo pelo 1º parágrafo é de ficar pasmado: é que o node.js não é nenhuma linguagem de programação. É um Runtime Environment, mais própriamente: Um “Javascript Runtime Environment”. Após este erro grosseiro, perdi a vontade de ler o resto do artigo.
E qual é o problema? Não mostrou que é possível fazer uma calculadora na mesma?
Não
E já não é primeira vez. que tem esse erro, que ja nem leio a introduções.
Se pesquisar por tutoriais semelhantes, vá ver nos comentários.
Eduardo, se ficou pasmado (e tem todo o direito a ficar pasmado) não tinha necessidade de vir mostrar a sua imensa sabedoria. O trabalho que o jedi teve não foi pouco, e acredito que muitos apreciarão o tutorial (nem todos tem necessidade de saber a diferença entre linguagem de programação e Runtime Environment). Teria sido uma oportunidade de ouro se o Eduardo tivesse apresentado um tutorial de pyton por exemplo, Assim já teria todo o direito de poder criticar da forma grosseira como fez, o trabalho dos outros.
Concordo plenamente Bruno.
Existem sempre os “mais espertos” que os outros, que precisam destes tutoriais para mostrar que sabem mais que o básico.
A intenção deste tutorial está muito bem conseguida, e deviamos era agradecer que alguém oferece gratuitamente estes tutoriais aos mais novos.
Espera lá, então alguém que publica algo não está sujeito a critica? São palavras sagradas é?
Mas não é esse o principal modo de separar aquilo que tem interesse daquilo que não tem qualidade?
O artigo está muito fraco, com erros muito grosseiros, e começam desda a primeira linha, ja nem falando de erros muito grosseiros na implementação não admitidos para… enfim fica para o autor trabalhar muito mais estes assuntos antes de os publicar.
Agora, se o autor nao queria ter estas criticas, ou não escrevia, ou dada a sua formação base, tinha muito mais cuidado como escreve sobre assuntos das quais é até formado, segundo julgo saber.
Bruno Monteiro, quem anda à chuva, ou se previne ou acaba molhado.