Criando uma API Rest com NodeJS, Sails, Mysql e visão de negócios.

Padrão

Fala Jovem.

Após um tempo sem postar vamos retomar os trabalhos.

Hoje vou falar um pouco de NodeJS, tecnologia que tem me feito um programador muito feliz no último ano. Comecei a trabalhar de forma mais dedicada com NodeJS quando criávamos o MVP de uma solução na Route Smart. Na época muitos me questionaram o motivo de não utilizar C# ou PHP. Visto todo o amor que tenho pelo PHP e respeito ao C#, já que por anos pagou os meus boletos.

Acredito que vivemos uma época em que as tecnologias estão cada dia mais especializadas. Com isso, não podemos mais forçar que um projeto ou regra de negócio se adeque a nossa tecnologia, mas sim usar a tecnologia mais adequada a realidade do projeto. Parece até algo básico, mas na prática não é.

No MVP que trabalhei, além do NodeJS utilizamos o Express, MongoDB e Angular. Acredito ter sido uma boa escolha e o projeto entrou em produção com sucesso, após 6 meses de trabalho. Nesse projeto utilizamos C# com Xamarin e Realm para criar nosso APP…e o querido PHP na figura do WordPress. Para conhecer a solução, SocialRoute.

OK Marcos, mas o seu post não é de Sails e Mysql???!

Sim é…. bem.. pois é…. rs

Estou trabalhando em um projeto onde o NodeJS se mostrava uma tecnologia adequada, mas o cliente queria utilizar o Mysql como banco de dados. De cara bye bye MongoDB  (Gostei muito de trabalhar com MongoDB). Mas o Mysql (MariaDB) é um velho e querido parceiro de projetos.

O Angular seria mantido, e atualizado, (4 na veia…) visto que o cliente já tinha expertise e no futuro sua equipe ira manter o projeto. Ai sobrou o Express…. Até é possível utilizar ele com Mysql, mas eu teria que construi muito código, enfim…. Infelizmente esse projeto tem apenas um desenvolvedor (Eu!), um analista de negócios/requisitos, o cliente, orçamento baixo e um prazo apertado. Além de sprints semanais. Você deve estar pensado…… Que “Buxa”!…. e te respondo: Sim é!!! Mas nem tudo são flores nobre padawan. As vezes precisamos encarar o lado negro da força sem um sabre de luz.

Conversando com alguns contatos da comunidade NodeJS, Code4Curitiba e PHP-PR eis que surge um nome….. SailsJS – The web framework of your dreams. Inicialmente fiquei com receio. Após dedicar um belo sábado de sol para estudar e testar o Sails, confesso que fique impressionado. Adicionei uma dose de coragem e coloquei o Sails na Stack do projeto. Após quase 2 meses trabalhando com ele vi que foi um escolha acertada.

Então vamos conhecer esse garoto chamado Sails…. Estou tomando por base que você já tenha instalado no seu computador o NodeJS, Mysql e VS Code. Não sou de indicar editores, pois é muito pessoal. Mas o VS Code vale apena dar uma olhadinha. Para Angular e NodeJS ele fantástico.

Abra seu terminal e vamos instalar o sails.

$ npm install sails -g

Estamos utilizando o -g para instalar o Sails de forma global e assim usar as opções de genarate que o Sails nos fornecem

Agora vamos criar nosso projeto. No terminal digite:

$ sails new app-sails

No final você verá:

Ele criou o projeto e instalou as dependências. Nem precisa fazer um “npm install”.  Agora vamos abrir o projeto no VSCode para ver o que ele criou. Olhando o package.json vemos as dependências que o Sails utiliza.

Como vamos usar o Mysql é preciso instalar o pacote npm sails-mysql. Voltamos ao terminal.

$ npm install sails-mysql –save

Olhando nosso package.json veremos que agora temos o salis-mysql como dependência. Isso acontece devido o –save.

Vamos conhecer a estrutura de pastas. Na API, como o próprio nome já diz, será os fontes da nossa API Rest. Lembrando que o Sails segue o padrão MVC.

Na pasta config teremos todos os dados de configuração da nossa aplicação.

Com nosso foco é criar um API Rest, não vou entrar em detalhes dos diretórios assets, tasks e views. No futuro pretendo testar com mais profundidade esse recurso.

Como nossa meta é usar o Mysql como banco de dados vamos ajustar nosso arquivo /config/connections.js  (Já tenha um banco previamente criado no Mysql.)

Vá no arquivo /config/env/development.js e informe que irá usar o Mysql como base.

O Sails trás um sistema de Generate que nos ajudam a criar estruturas em nosso projeto. Vamos usar ele para criar nossa Model Cliente.

$ sails generate model cliente nome:string email:string idade:integer

Agora vamos criar nosso Controller

$  sails generate controller cliente

Olhando nosso VSCode temos a nossa Model.

E o nosso controller.

No maior “estilo Rails de ser” nossa API já está pronta. Vá no terminal, cruze os dedos e execute:

$ sails lift

O Sails irá levantar um servidor http. Ele irá perguntar se quer criar/atualizar seu modelo de dados no mysql. Escolha a opção 2 para ele gerar nossa tabela. Se tudo de certo verá algo como a imagem a abaixo em seu terminal.

Olhando nosso banco Mysql vemos que o Sails criou uma tabela para nós.

Além disso já temos condição de acessar nossa API.

Vamos executar um GET em nossa api/cliente

Nenhum resultado foi exibido, visto que nossa tabela cliente está vazia. Vamos inserir um cliente via POST.

 

Será que gravou?  Vamos ver no Mysql

Coisa linda hem?!

Vou inserir mais alguns registros e vamos refazer nossa consulta GET em api/cliente

E nossa api ainda permite filtrar, olha só.

http://localhost:1337/cliente/?idade=99

Enfim, ai está um opção de criar um API REST rapidamente. E mostramos apenas o básico do básico do poder do Sails. No futuro pretendo mostrar aqui no blog como implantar o JWT, ligação entre as Models, validação de campos, rotas etc….

Caso não queira esperar, borá ir na documentação do Sails que é muito boa!

http://sailsjs.com/documentation/reference/application

Forte abraço.

Marcos Hitanael Barchiki dos Santos

 

 

 

 

 

 

 

 

 

3 comentários sobre “Criando uma API Rest com NodeJS, Sails, Mysql e visão de negócios.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *