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


Criando APIs Rest com Node.js, Trabalhos de Programação Javascript

Introduz os conceitos do que é Node.js e sua aplicação em APIs Rest.

Tipologia: Trabalhos

2020

Compartilhado em 28/02/2020

jytaloramon
jytaloramon 🇧🇷

2 documentos

1 / 39

Toggle sidebar

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

Não perca as partes importantes!

bg1
UNIVERSIDADE FEDERAL DE ALAGOAS - UFAL
Amaury Luiz Chaves Junior
Giovanni José Gome Cavalcante
João Clayton Gomes Silva
José Ytalo Ramon de A. Gonçalves
Leonardo Amaral de A. Araújo
Lucas de Assis Pereira Chaves
CRIANDO APIS COM NODE.JS
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

Pré-visualização parcial do texto

Baixe Criando APIs Rest com Node.js e outras Trabalhos em PDF para Programação Javascript, somente na Docsity!

UNIVERSIDADE FEDERAL DE ALAGOAS - UFAL

Amaury Luiz Chaves Junior Giovanni José Gome Cavalcante João Clayton Gomes Silva José Ytalo Ramon de A. Gonçalves Leonardo Amaral de A. Araújo Lucas de Assis Pereira Chaves

CRIANDO APIS COM NODE.JS

Arapiraca - Alagoas 2019 Amaury Luiz Chaves Junior Giovanni José Gome Cavalcante João Clayton Gomes Silva José Ytalo Ramon de A. Gonçalves Leonardo Amaral de A. Araújo Lucas de Assis Pereira Chaves

CRIANDO APIS COM NODE.JS

Apostila para auxílio de minicurso, apresentado na Universidade Federal de Alagoas - UFAL, como parte das exigências para a obtenção da nota da disciplina de ACE. Professor: Elthon Allex da Silva Oliveira

Sumário

  • Sumário............................................................................................................................................
  • Introdução
  • Principais Características
    • Single-thread................................................................................................................................
    • Callback
    • Event Loop
  • Preparação do ambiente
    • Instalando o Node.js
    • Instalando o Postman
    • Instalando o MongoDB
  • O que são APIs
  • Protocolo HTTP.............................................................................................................................
    • URL – Uniform Resource Locator
    • Mensagem
    • Linha de solicitação
    • Cabeçalhos
    • Body
  • Sistema de modulo com NPM
    • O que é?
    • Comandos básicos
    • Arquivo package.json
  • Construindo nossa API
    • Express
    • Codificação
    • Conclusão
  • MongoDB
    • O que são documentos?
    • Chave
    • Voltando ao código
  • Teste final da API
    • Salvando uma postagem
    • Recebendo todas as postagens
    • Criando um comentário em uma foto
  • Referências Bibliográficas

Event Loop

Na maioria das linguagens de programação sempre que é feita uma chamada de função ela vai para um “call stack” - pilha de chamada, as pilhas são do tipo LIFO (last-in, first-out), o último a entrar é o primeiro a sair. Node.js é orientado a evento, ou seja, assíncrono. Basicamente existe um “loop infinito” que a todo momento verifica se há algo novo na fila de eventos, se existir, uma determinada tarefa será executada. O responsável por essa tarefa é o chamado Event-Loop. Figura 1 – Modelo de execução do Node.js Fonte: gitconnected

Preparação do ambiente

Instalando o Node.js

De modo geral a instalação do Node é bem simples independente do sistema operacional utilizado e, pode ser feita tanto via download direto do site oficial da plataforma quanto via repositório de distribuições Linux. Página oficial: https://nodejs.org/pt-br/. Após acessar o site, clique em um dos botões verdes: na versão do Node que deseja utilizar. É recomendado baixar a versão “LTS”, pois apresenta a base mais estável. Para quem é usuário de Windows a instalação é simples: next, next…, finish. Para usuários do “Pinguim” segue o guia de instalação, link: https://nodejs.org/en/download/package-manager/. Seguido todo o processo, agora verificaremos se a instalação foi efetuada com sucesso utilizando os comandos: “node - v” e “npm - v”; por enquanto não devemos nos preocupar em saber o que é esse segundo comando. Figura 2 – Homepage do site nodejs.org Fonte: Print screen Figura 3 – Saída esperada dos comandos Fonte: Print screen

Também precisaremos de o banco de dados para criarmos CRUDs, operações básicas de criação, deleção e atualização de dados. Para essa tarefa usaremos o software de gerenciamento de banco de dados (SGBD) orientado a documentos MongoDB. Link para o tutorial de instalação: https://docs.mongodb.com/manual/tutorial/.

O que são APIs API é um acrônimo para Interface de Programação de Aplicativos, no inglês Application Programming Interface. Entretanto, as palavras têm um sentido muito abstrato e, o único entendimento provido por elas é que se trata de uma abstração que ajuda a construir aplicações. Popularmente a sigla tornou-se significado de qualquer especificação que facilite a codificação de softwares. Afinal, quem nunca ouviu falar em GoogleMaps API, Facebook API, API REST/RESTful. Entretanto, o conceito vai além disso - “Todo serviço da Web são APIs, mas nem toda API é um serviço Web”. Vamos imaginar um cenário….

  • Uma empresa necessita criar uma gravadora de CD/DVD que funcionará nos sistemas operacionais Windows e Linux.
  • Entretanto, o Windows “fala” inglês e o Linux português, então, como faremos para que essa gravadora converse com esses SOs? Codificaremos duas vezes a gravadora com as respectivas linguagens? Criaremos duas gravadoras diferentes? É… essas abordagens duplicaram custo de produção e a chance de haver bugs.
  • E se pudéssemos codificar essa gravadora uma única vez. Foi diante desse tipo de problema que as APIs surgiram, elas proporcionam a integração entre partes distintas da aplicação de maneira ágil, segura e bem menos “traumática” para o desenvolvedor. As APIs fazem com que um recurso não precise saber como o outro funciona Figura 6 – Diagrama de funcionamento da Amazon API gateway Fonte: aws.amazon

Protocolo HTTP Para que possamos fazer a comunicação entre dispositivos distintos é necessário mecanismos para tal, diante dessa necessidade surgiu os protocolos de redes, como: FTP, HTTP, SMTP, SSH, entre outros. Nossos estudos se situarão no Hypertext Transfer Protocol (HTTP), que é um protocolo que trabalha na camada de aplicação e que foi desenvolvido para transmitir dados em formato de hipermídia – texto. Seguindo o modelo cliente-servidor, o que significar que o cliente é quem inicia a conexão, foi desenvolvido inicialmente para comunicação entre navegadores e servidores Web, porém pode ser utilizado para outros fins.

URL – Uniform Resource Locator

Quando um cliente necessita obter dados ou uma página Web ele precisa saber onde encontrar esse recurso, para isso o protocolo HTTP utiliza uma URL (localizadora de recurso Uniforme), que é uma especificação para localização de informações na internet. Uma URL é constituída de quatro partes:

  • Protocolo: é a especificação das regras que a conexão irá utilizara para executar a tarefa.
  • Host: é o local/endereço onde as informações estarão hospedadas (servidor).
  • Porta: identifica a aplicação e processos que uma máquina executa na rede.
  • Path: localização do recurso dentro do servidor Figura 7 – Formato de uma URL Fonte: Comunicação de Dados e Redes de Computadores (FOROUZAN, 2007)

Mensagem

As mensagens HTTP consistem em solicitação do cliente para o servidor e, a resposta do servidor para o cliente, para isso as mensagens utilizam um formato genérico na transferência dos dados. Nosso estudo se concentrará em duas partes: Headers (cabeçalhos) e Body (Corpo). Fonte: Comunicação de Dados e Redes de Computadores (FOROUZAN, 2007) Figura 8 – Ciclo de uma transação HTTP Figura 9 - Formato de uma requisição HTTP Fonte: Comunicação de Dados e Redes de Computadores (FOROUZAN, 2007) Ff :

Cabeçalhos

Eles permitem que tanto o cliente quanto servidor possa adicionar mais informações na solicitação ou na resposta HTTP. São suportados inúmeros cabeçalhos para os mais variados fins, inclusive é suportado cabeçalho proprietário: personalizados. Cabeçalhos mais comuns:

  • Connection: defini se a comunicação deve ser fechada após o processamento ou se ela deve ficar aberta para mensagens futuras.
  • Content-Encoding: especifica qual é o tipo de codificação é usada no corpo da mensagem.
  • Content-Length: especifica o tamanho em bytes do corpo da mensagem
  • Content-Type: indica o tipo de arquivo do recurso – text/html, text/pain; além de definir a codificação dos dados – charset.

Body

Podendo ou não está presente na solicitação ou na resposta, o body normalmente contém os dados a serem transmitidos.

Sistema de modulo com NPM

O que é?

É um acrônimo para Node Package Manager, ou seja, é um gerenciador de pacotes para Node.js. Foi criado em 2009 como um projeto de código aberto com intuito de ajudar desenvolvedores JavaScript a compartilhar facilmente módulos de códigos empacotados: basicamente são libs que ajudam os desenvolvedores a na construção de seus APPs. O NPM tornou- se tão popular no mundo node que da versão 0.6.x em diante ele já vem incorporado ao instalador oficial da plataforma. Figura 11 – Logo do NPM Fonte: NPM Figura 12 – Exemplo de busca de um módulo no site do NPM Fonte: Print screen

Construindo nossa API

Express

Quando criamos qualquer projeto é necessário efetuar diversas configurações, sejam de segurança, de dependências, configurações de projetos, dentre outros. Essa tarefa torna-se bastante estressante, principalmente quando se trata de novas tecnologias, devido a problemas como esse surgem diversos framework com o intuito de facilitar a vida dos programadores, no mundo Node.js o Express é o mais reconhecido por essa tarefa, não falei o melhor, falei o mais famoso. O Express é um framework minimalista e flexível criado pela fundação Node.js que fornece funcionalidade bem robustas de recurso para tratamentos de requisições, por isso utilizaremos em nosso projeto. Recurso apresentados:

  • Ferramentas para gerar aplicativos rapidamente.
  • Roteamento robusto.
  • Foco no alto desempenho.
  • Cobertura de teste.
  • Auxílio em tratamento HTTP.
  • Facilidade para trabalhar com middlewares,

Codificação

Partiu criar um “projetinho”? Para nossa primeira API criaremos algo bem simples. O nosso projeto terá o nome de “ minicurso-nodejs ” e a nossa tarefa é criar uma API para que um usuário possa postar uma foto e outros usuários possam comenta-la. As seguintes funções estarão no nosso sistema:

  • Postagem de uma foto
  • Lista todas as fotos postadas
  • Comentar uma foto
  • Lista todos o comentário de uma foto A primeira coisa a ser feita é criar a pasta onde o projeto vai ficar, comandos: $ mkdir minicurso-nodejs – criando a pasta. $ cd minicurso-nodejs – acessando a pasta.

$ npm init – inicializar o projeto, vai ser apresentado um questionário onde será informado os dados. Próximo passo, instalar as dependências através dos comandos: $ npm install express --save $ npm install body-parser --save $ npm install mongodb --save Fonte: Print screen Figura 14 – Configurando o arquivo package.json via ferramenta Figura 15 – package.json do nosso projeto Fonte: Imagem gerada utilizando a ferramenta carbon.sh