Construindo APIs REST com Node.js
Caio Ribeiro PereiraSobre o autor
Um Web Developer com forte experiência no domínio dessa sopa de letrinhas: Node.js, JavaScript, Meteor, Ruby On Rails, Agile, Filosofia Lean, Scrum, XP, Kanban e TDD.
Bacharel em Sistemas de Informação pela Universidade Católica de Santos, blogueiro nos tempos livres, apaixonado por programação, por compartilhar conhecimento, testar novas tecnologias, e assistir filmes e seriados.
Participo das comunidades:
- NodeBR: comunidade brasileira de Node.js;
- MeteorBrasil: comunidade brasileira de Meteor;
- DevInSantos: grupo de desenvolvedores de software em Santos.
Blog: http://udgwebdev.com.
Prefácio
Cenário atual das aplicações web
Atualmente, vivemos em uma fase na qual a maioria dos usuários utilizam diversos tipos de devices para se conectarem à internet. Os mais populares são smartphones, tablets e notebooks. Desenvolver sistemas para diversos tipos de devices requer o trabalho de construir web services, também conhecidos pelo nome de APIs (Application Program Interface).
Basicamente, essas APIs são sistemas back-end que têm o objetivo de trabalhar apenas com dados, de forma centralizada, permitindo que sejam desenvolvidos, separadamente, aplicações clientes que possuem interfaces para o usuário final. Essas aplicações clientes geralmente são: mobile apps, aplicações desktop ou web apps.
Desde 2010 até os dias de hoje, o Node.js cada vez mais provou ser uma plataforma excelente na solução de diversos problemas, principalmente para construção de APIs RESTful. Sua arquitetura Single Thread que realiza I/O não bloqueante rodando em cima do JavaScript – que é uma linguagem muito presente em praticamente todos os browsers atuais – demonstrou uma boa eficiência no processamento de muitas aplicações atuais.
Existem alguns casos de empresas grandes, como por exemplo, LinkedIn e PayPal, que economizaram significativamente gastos com servidores ao migrar alguns de seus projetos para o Node.js.
E uma outra vantagem do uso do Node.js, que cativou muitos desenvolvedores, foi a sua curva baixa de aprendizado. Afinal, quem já trabalha com desenvolvimento web já possui, pelo menos, um conhecimento básico sobre a linguagem JavaScript.
A quem se destina este livro?
Este livro é destinado aos desenvolvedores e desenvolvedoras web que tenham pelo menos conhecimentos básicos de JavaScript e, principalmente, conheçam bem sobre Orientação a Objetos (OO), arquitetura cliente-servidor e que tenham noções das principais características sobre API RESTful.
Ter domínio desses conceitos, mesmo que seja um conhecimento básico deles, será essencial para que a leitura deste livro seja de fácil entendimento.
Algo bem legal do livro é que todos os códigos utilizarão a mais recente implementação do JavaScript, o EcmaScript 2015 (também conhecido pelos nomes EcmaScript 6 ou ES6).
Como devo estudar?
Ao decorrer da leitura, serão apresentados diversos conceitos e códigos, para que você aprenda na prática toda a parte teórica do livro. Ele o guiará de forma didática no desenvolvimento de dois projetos (uma API e um cliente web), que no final serão integrados para funcionar como um único projeto.
Você pode discutir sobre este livro no Fórum da Casa do Código: http://forum.casadocodigo.com.br/.
Atenção: É recomendado seguir passo a passo as instruções do livro, para no final você concluir o projeto corretamente.
Sumário
- 1 - Introdução ao Node.js
- 1.1 - O que é Node.js?
- 1.2 - Principais características
- 1.3 - Por que devo aprender Node.js?
- 2 - Setup do ambiente
- 2.1 - Instalação convencional do Node.js
- 2.2 - Instalação alternativa via NVM
- 2.3 - Test-drive no ambiente
- 3 - Gerenciando módulos com NPM
- 3.1 - O que é e o que faz o NPM?
- 3.2 - Principais comandos do NPM
- 3.3 - Entendendo o package.json
- 3.4 - Automatizando tarefas com NPM
- 4 - Construindo a API
- 4.1 - Introdução ao Express
- 4.2 - Criando o projeto piloto
- 4.3 - Implementando um recurso estático
- 4.4 - Organizando o carregamento dos módulos
- 5 - Trabalhando com banco de dados relacional
- 5.1 - Introdução ao SQLite3 e Sequelize
- 5.2 - Configurando o Sequelize
- 5.3 - Modelando aplicação com Sequelize
- 6 - Implementando CRUD dos recursos da API
- 6.1 - Organizando rotas das tarefas
- 6.2 - Implementando um simples middleware
- 6.3 - Listando tarefas via método GET
- 6.4 - Cadastrando tarefas via método POST
- 6.5 - Consultando uma tarefa via método GET
- 6.6 - Atualizando uma tarefa com método PUT
- 6.7 - Excluindo uma tarefa com método DELETE
- 6.8 - Refactoring no middleware
- 6.9 - Implementando rotas para gestão de usuários
- 6.10 - Testando rotas com Postman
- 7 - Autenticando usuários na API
- 7.1 - Introdução ao Passport e JWT
- 7.2 - Instalando Passport e JWT na API
- 7.3 - Implementando autenticação JWT
- 7.4 - Gerando Tokens para usuários autenticados
- 8 - Testando a aplicação – Parte 1
- 8.1 - Introdução ao Mocha
- 8.2 - Configurando ambiente para testes
- 8.3 - Testando endpoint de autenticação da API
- 9 - Testando a aplicação – Parte 2
- 9.1 - Testando os endpoints das tarefas
- 9.2 - Testando os endpoints de usuário
- 10 - Documentando uma API
- 10.1 - Introdução a ferramenta apiDoc
- 10.2 - Documentando a geração de tokens
- 10.3 - Documentando recurso de gestão de usuários
- 10.4 - Documentando recurso de gestão de tarefas
- 11 - Preparando o ambiente de produção
- 11.1 - Introdução ao CORS
- 11.2 - Habilitando CORS na API
- 11.3 - Gerando logs de requisições
- 11.4 - Configurando processamento paralelo com módulo cluster
- 11.5 - Compactando requisições com GZIP
- 11.6 - Configurando SSL para usar HTTPS
- 11.7 - Blindando a API com Helmet
- 12 - Construindo uma aplicação cliente – Parte 1
- 12.1 - Setup do ambiente da aplicação
- 12.2 - Criando Templates de Signin e Signup
- 12.3 - Implementando os componentes de sign in e sign up
- 13 - Construindo uma aplicação cliente – Parte 2
- 13.1 - Templates e componentes para CRUD de tarefas
- 13.2 - Componentes para tela de usuário logado
- 13.3 - Criando componente de menu da aplicação
- 13.4 - Tratando os eventos dos componentes das telas
- 14 - Bibliografia
Dados do produto
- Número de páginas:
- 187
- ISBN:
- 978-85-5519-150-3
- Data publicação:
- 01/2016. Atualizado em 10/2021.