Use o código e tenha 10% de desconto!

Construindo APIs REST com Node.js

Caio Ribeiro Pereira

Sobre o autor

Caio Ribeiro Pereira
Fig. 0.1: Caio Ribeiro Pereira


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 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
    • 10.5 - Conclusão
  • 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 - Referências bibliográficas

Dados do produto

Número de páginas:
183
ISBN:
978-85-5519-150-3
Data publicação:
01/2016

Compartilhe!

Compartilhe no Facebook Compartilhe no Twitter