Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

Construindo apis rest com nodejs, Esquemas de Engenharia Informática

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.

Tipologia: Esquemas

2019

Compartilhado em 15/06/2023

jose-souza-0fs
jose-souza-0fs 🇧🇷

1 documento

1 / 188

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
67188
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61
pf62
pf63
pf64

Pré-visualização parcial do texto

Baixe Construindo apis rest com nodejs e outras Esquemas em PDF para Engenharia Informática, somente na Docsity!

67188

© Casa do Código

Todos os direitos reservados e protegidos pela Lei nº9.610, de

Nenhuma parte deste livro poderá ser reproduzida, nem transmitida, sem

autorização prévia por escrito da editora, sejam quais forem os meios:

fotográficos, eletrônicos, mecânicos, gravação ou quaisquer outros.

Casa do Código

Livros para o programador

Rua Vergueiro, 3185 - 8º andar

04101 - 300 – Vila Mariana – São Paulo – S P – Brasil

Casa do Código

Agradecimentos

Primeiramente, quero agradecer a Deus por tudo que fizeste em minha vida!

Agradeço também ao meu pai e à minha mãe, pelo amor, força, incentivo e

por todo apoio desde o meu início de vida. Obrigado por tudo e, principal-

mente, por estarem ao meu lado em todos os momentos.

Agradeço à Sra. Charlotte Bento de Carvalho, pelo apoio e incentivo nos

meus estudos desde a escola até a minha formatura na faculdade.

Um agradecimento ao meu primo Cláudio Souza. Foi graças a ele que

entrei nesse mundo da tecnologia. Ele foi a primeira pessoa a me apresentar

o computador, e me aconselhou anos depois a entrar em uma faculdade de

TI.

Um agradecimento ao Bruno Alvares da Costa, Leandro Alvares da Costa

e Leonardo Pinto, esses caras me apresentaram um mundo novo da área de

desenvolvimento de

software

. Foram eles que me influenciaram a escrever um

blog, a palestrar em eventos, a participar de comunidades e fóruns e, princi-

palmente, a nunca cair na zona de conforto, a aprender sempre. Foi uma

honra trabalhar junto com eles em 2011.

Obrigado ao pessoal da editora Casa do Código, em especial ao Paulo

Silveira, Adriano Almeida e Vivian Matsui. Muito obrigado pelo suporte e

pela oportunidade!

Obrigado à galera da comunidade NodeBR. Seus

feedbacks

ajudaram a

melhorar este livro. Também agradeço a todos os leitores do blog Under-

ground WebDev (http://udgwebdev.com) , afinal, a essência deste livro foi

baseada em muitos dos posts do blog.

Por último, obrigado a você, prezado leitor, por adquirir este livro. Espero

que ele seja uma ótima referência para você.

i

Casa do Código

Sem dúvida muito bom o livro de Node.js, um conteúdo bem prático, com

muitos exemplos e até a construção de um projeto. Isso ajuda muito o leitor,

pois a partir do momento que ele põe a mão na massa, o conteúdo é aprendido

de forma mais fácil. Parabéns!

  • David Alves – david_end27@hotmail.com

Apoio demais essa metodologia de aprendizado prático, ainda mais com a

construção de um projeto passo-a-passo. Sem dúvidas, pretendo aprender

também. Obrigado por disponibilizar esse espaço para a nossa opinião.

  • Rafael Miguel – raffaelmiguell@gmail.com

iv

Casa do Código

Sobre o autor

Fig. 1: Caio Ribeiro Pereira

Um Web Developer com forte experiência no domínio dessa sopa de le-

trinhas: 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 San-

tos, blogueiro nos tempos livres, apaixonado por programação, por compar-

tilhar 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.

v

Casa do Código

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.

viii

Casa do Código Sumário

  • 1 Introdução ao Node.js Sumário
    • 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 Sumário Casa do Código
    • 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
    • 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
    • 9.1 Testando os endpoints das tarefas
    • 9.2 Testando os endpoints de usuário
  • 10 Documentando uma API Casa do Código Sumário
    • 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
    • 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
    • 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 - Versão: 19.2.

Capítulo 1

Introdução ao Node.js

1.1 O que é Node.js?

Fig. 1.1: Logo do Node.js

O Node.js é uma plataforma altamente escalável e de baixo nível. Nele, você

vai programar diretamente com diversos protocolos de rede e internet, ou uti-

Casa do Código Capítulo 1. Introduç ão ao Node.js

de eventos do JavaScript client-side; a única diferença são os tipos de even-

tos, ou seja, não existem eventos de

click

do mouse,

keyup

do teclado ou

qualquer evento de componentes do HTML. Na verdade, trabalhamos com

eventos de I/O , como por exemplo: o evento

connect

de um banco de da-

dos, um

open

de um arquivo, um

data

de um streaming de dados e muitos

outros.

Fig. 1.2: Event-Loop do Node.js

O Event-Loop é o agente responsável por escutar e emitir eventos. Na prá-

tica, ele é basicamente um loop infinito que, a cada iteração, verifica em sua

fila de eventos se um determinado evento foi disparado. Quando um evento é

disparado, o Event-Loop executa e o envia para a fila de executados. Quando

um evento está em execução, nós podemos programar qualquer lógica dentro

dele, e isso tudo acontece graças ao mecanismo de

callback

de função do

JavaScript.

1.3. Por que devo aprender Node.js? Casa do Código

1.3 Por que devo aprender Node.js?

  1. JavaScript everywhere : praticamente, o Node.js usa JavaScript como lin-

guagem de programação

server-side

. Essa característica permite que você

reduza e muito sua curva de aprendizado, afinal, a linguagem é a mesma

do JavaScript

client-side

. Seu desafio nesta plataforma será de aprender a

fundo como funciona a programação assíncrona para se tirar maior pro-

veito dessa técnica em sua aplicação. Outra vantagem de se trabalhar com

JavaScript é que você vai manter um projeto de fácil manutenção – é claro,

desde que saiba programar JavaScript de verdade!

Você terá facilidade em procurar profissionais para seus projetos e gastará

menos tempo estudando uma nova linguagem server-side. Uma vanta-

gem técnica do JavaScript comparador com outras linguagens de back-

end é que você não vai utilizar mais aqueles frameworks de serialização de

objetos JSON (

JavaScript Object Notation ), afinal, o JSON client-side é o

mesmo no server-side. Há também casos de aplicações usando banco de

dados que persistem objetos JSON, um bom exemplo são os NoSQL Mon-

goDB e CouchDB. Outro detalhe importante é que, atualmente, o Node.js

adota diversas funcionalidades da implementação ECMAScript 6, permi-

tindo a codificação de um JavaScript mais elegante e robusto.

  1. Comunidade ativa : esse é um dos pontos mais fortes do Node.js. Atual-

mente, existem várias comunidades no mundo inteiro trabalhando muito

para esta plataforma, seja divulgando posts e tutoriais, palestrando em

eventos, ou principalmente publicando e mantendo novos módulos. Aqui

no Brasil, temos três grupos bem ativos:

  • Google : https://groups.google.com/forum/#!forum/nodebr
  • Facebook : https://facebook.com/groups/nodejsbrasil
  • Slack : https://nodebr.slack.com
  1. Ótimos salários : desenvolvedores Node.js geralmente recebem bons sa-

lários. Isso ocorre pelo fato de que infelizmente no Brasil ainda existem

poucas empresas adotando essa tecnologia. Isso faz com que empresas que

Capítulo 2

Setup do ambiente

Neste capítulo, explicarei como instalar o Node.js nos principais sistemas ope-

racionais (Windows, Linux, MacOSX). Porém, no decorrer do livro, os exem-

plos serão apresentados utilizando um MacOSX.

Apesar de existirem algumas pequenas diferenças de código entre esses

sistemas operacionais, fique tranquilo em relação a esse problema, pois os

exemplos que serão aplicados neste livro são compatíveis com essas platafor-

mas.

2.1 Instalação convencional do Node.js

Para configurar um ambiente Node.js, independente de qual sistema operaci-

onal, as dicas serão praticamente parecidas. Somente alguns procedimentos

serão diferentes para cada sistema, principalmente para o Linux, mas não será

nada grave.

2.1. Instalaç ão convencional do Node.js Casa do Código

Fig. 2.1: Homepage do Node.js

O primeiro passo é acessar seu site oficial do Node.js: http://nodejs.org.

Em seguida, clique no botão

Install para baixar automaticamente

a última versão compatível com seu sistema operacional Windows ou

MacOSX. Caso você use Linux, recomendo que leia em detalhes a

Wiki do repositório Node.js, em https://github.com/nodejs/node/wiki/

Installing-and-Building-Node.js.

Nessa Wiki, é explicado como instalar de forma compilada para qualquer

distribuição Linux.

Após fazer o download do Node.js, instale-o normalmente. No caso do

Windows e MacOSX, basta clicar no famoso botão

Next

inúmeras vezes até

concluir a instalação, pois não há nenhuma configuração específica para ajus-

tar.

Para testar se tudo esta rodando corretamente, abra o terminal (para

quem usa Linux ou MacOSX), ou prompt de comandos (se possível utilize

o Power Shell) do Windows, e digite o seguinte comando: