60
>>> RESTful API >>> Com Node.js e Restify Name: Anderson Pimentel Date: 19 de Março de 2018 [email protected] [~]$ _ [1/31]

>>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

  • Upload
    vukhanh

  • View
    255

  • Download
    0

Embed Size (px)

Citation preview

Page 1: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> RESTful API>>> Com Node.js e Restify

Name: Anderson Pimentel†

Date: 19 de Março de 2018

[email protected]

[~]$ _ [1/31]

Page 2: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> Agenda

1. Introdução

2. Boas Práticas

3. Hands-onAmbiente

4. Referências

[~]$ _ [2/31]

Page 3: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> Introdução

ObjetivoDesenho e Implementação de APIs Web.

O minicurso se dará da seguinte forma:

* 19.03.18 -> Fundamentos

* 21.03.18 -> Hands-on

[1. Introdução]$ _ [3/31]

Page 4: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> Introdução

ObjetivoDesenho e Implementação de APIs Web.

O minicurso se dará da seguinte forma:

* 19.03.18 -> Fundamentos

* 21.03.18 -> Hands-on

[1. Introdução]$ _ [3/31]

Page 5: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> O que são APIs?

* Acrônimo utilizado pela comunidade computacional e édenominado como Application Programming Interface

* Interface de programação de aplicativos referentes aométodo de comunicação entre duas entidades de código

* APIs servem para comunicar programas do mesmo computador

[1. Introdução]$ _ [4/31]

Page 6: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> O que são APIs?

* Acrônimo utilizado pela comunidade computacional e édenominado como Application Programming Interface

* Interface de programação de aplicativos referentes aométodo de comunicação entre duas entidades de código

* APIs servem para comunicar programas do mesmo computador

[1. Introdução]$ _ [4/31]

Page 7: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> O que são APIs?

* Acrônimo utilizado pela comunidade computacional e édenominado como Application Programming Interface

* Interface de programação de aplicativos referentes aométodo de comunicação entre duas entidades de código

* APIs servem para comunicar programas do mesmo computador

[1. Introdução]$ _ [4/31]

Page 8: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> APIs Web

* Comunicação entre várias máquinas em uma rede

* Possibilitam invocar a execução de código em outra máquinapela internet

* Ótimas para controlar a exposição do código* Empresas mantém seus códigos privados sem ter que revelar

o código real, apenas uma interface de comunicação.

* Uma máquina pode usar várias APIs web para criar umaplicativo novo, conhecido como mashup

[1. Introdução]$ _ [5/31]

Page 9: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> APIs Web

* Comunicação entre várias máquinas em uma rede

* Possibilitam invocar a execução de código em outra máquinapela internet

* Ótimas para controlar a exposição do código* Empresas mantém seus códigos privados sem ter que revelar

o código real, apenas uma interface de comunicação.

* Uma máquina pode usar várias APIs web para criar umaplicativo novo, conhecido como mashup

[1. Introdução]$ _ [5/31]

Page 10: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> APIs Web

* Comunicação entre várias máquinas em uma rede

* Possibilitam invocar a execução de código em outra máquinapela internet

* Ótimas para controlar a exposição do código

* Empresas mantém seus códigos privados sem ter que revelaro código real, apenas uma interface de comunicação.

* Uma máquina pode usar várias APIs web para criar umaplicativo novo, conhecido como mashup

[1. Introdução]$ _ [5/31]

Page 11: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> APIs Web

* Comunicação entre várias máquinas em uma rede

* Possibilitam invocar a execução de código em outra máquinapela internet

* Ótimas para controlar a exposição do código* Empresas mantém seus códigos privados sem ter que revelar

o código real, apenas uma interface de comunicação.

* Uma máquina pode usar várias APIs web para criar umaplicativo novo, conhecido como mashup

[1. Introdução]$ _ [5/31]

Page 12: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> APIs Web

* Comunicação entre várias máquinas em uma rede

* Possibilitam invocar a execução de código em outra máquinapela internet

* Ótimas para controlar a exposição do código* Empresas mantém seus códigos privados sem ter que revelar

o código real, apenas uma interface de comunicação.

* Uma máquina pode usar várias APIs web para criar umaplicativo novo, conhecido como mashup

[1. Introdução]$ _ [5/31]

Page 13: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> APIs Web

A melhor maneira de prever o futuro é inventá-lo (AlanKay, cientista da computação, em 1971)

[1. Introdução]$ _ [6/31]

Page 14: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> APIs Web

Qual o ganho de uma empresa por liberar conteúdo via APIs?

1. Ajuda os desenvolvedores a criar novos soluções e serviçosusando sua plataforma

2. Promove a empresa

Resumindo: Implementar APIs Web acessíveis não égenerosidade!! É um investimento lucrativo para muitasempresas.

[1. Introdução]$ _ [7/31]

Page 15: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> APIs Web

Qual o ganho de uma empresa por liberar conteúdo via APIs?

1. Ajuda os desenvolvedores a criar novos soluções e serviçosusando sua plataforma

2. Promove a empresa

Resumindo: Implementar APIs Web acessíveis não égenerosidade!! É um investimento lucrativo para muitasempresas.

[1. Introdução]$ _ [7/31]

Page 16: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> APIs Web

Qual o ganho de uma empresa por liberar conteúdo via APIs?

1. Ajuda os desenvolvedores a criar novos soluções e serviçosusando sua plataforma

2. Promove a empresa

Resumindo: Implementar APIs Web acessíveis não égenerosidade!! É um investimento lucrativo para muitasempresas.

[1. Introdução]$ _ [7/31]

Page 17: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> APIs Web

Qual o ganho de uma empresa por liberar conteúdo via APIs?

1. Ajuda os desenvolvedores a criar novos soluções e serviçosusando sua plataforma

2. Promove a empresa

Resumindo: Implementar APIs Web acessíveis não égenerosidade!! É um investimento lucrativo para muitasempresas.

[1. Introdução]$ _ [7/31]

Page 18: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> Protocolo para APIs Web

DefiniçãoProtocolos são regras estabelecidas para comunicação entremáquinas.

Uma abstração comum para conceitualizar isso é o modelo OSI(Open Systems Interconnection Model )

[1. Introdução]$ _ [8/31]

Page 19: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> Protocolo para APIs Web

DefiniçãoProtocolos são regras estabelecidas para comunicação entremáquinas.

Uma abstração comum para conceitualizar isso é o modelo OSI(Open Systems Interconnection Model )

[1. Introdução]$ _ [8/31]

Page 20: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> Camada de Aplicação (HTTP, SSH, FTP)

Podemos definir conceitualmente duas camadas acima da camadade aplicação:

* Camada de Web Service

* Camada de Formatação de Mensagem

[1. Introdução]$ _ [9/31]

Page 21: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> Web Service

% SOAP

! REST

[1. Introdução]$ _ [10/31]

Page 22: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> Web Service

% SOAP

! REST

[1. Introdução]$ _ [10/31]

Page 23: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> Web Service

% SOAP

! REST

[1. Introdução]$ _ [10/31]

Page 24: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> Formatação de Mensagem

% XML

! JSON

[1. Introdução]$ _ [11/31]

Page 25: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> Formatação de Mensagem

% XML

! JSON

[1. Introdução]$ _ [11/31]

Page 26: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> Formatação de Mensagem

% XML

! JSON

[1. Introdução]$ _ [11/31]

Page 27: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> REST

REST -> REpresentational State Transfer

* Conjunto de estilos e guias, pois carrega recursos do HTTPcom o objetivo de transmitir informação

* Usa verbos HTTP (get, post, put, delete entre outros) paralidar com o gerenciamento de recursos do servidor

* Usa qualquer protocolo para estrutura de dados (xml, jsone etc..)

[1. Introdução]$ _ [12/31]

Page 28: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> REST

REST -> REpresentational State Transfer

* Conjunto de estilos e guias, pois carrega recursos do HTTPcom o objetivo de transmitir informação

* Usa verbos HTTP (get, post, put, delete entre outros) paralidar com o gerenciamento de recursos do servidor

* Usa qualquer protocolo para estrutura de dados (xml, jsone etc..)

[1. Introdução]$ _ [12/31]

Page 29: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> REST

REST -> REpresentational State Transfer

* Conjunto de estilos e guias, pois carrega recursos do HTTPcom o objetivo de transmitir informação

* Usa verbos HTTP (get, post, put, delete entre outros) paralidar com o gerenciamento de recursos do servidor

* Usa qualquer protocolo para estrutura de dados (xml, jsone etc..)

[1. Introdução]$ _ [12/31]

Page 30: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> REST

REST -> REpresentational State Transfer

* Conjunto de estilos e guias, pois carrega recursos do HTTPcom o objetivo de transmitir informação

* Usa verbos HTTP (get, post, put, delete entre outros) paralidar com o gerenciamento de recursos do servidor

* Usa qualquer protocolo para estrutura de dados (xml, jsone etc..)

[1. Introdução]$ _ [12/31]

Page 31: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> REST

REST -> REpresentational State Transfer

* Conjunto de estilos e guias, pois carrega recursos do HTTPcom o objetivo de transmitir informação

* Usa verbos HTTP (get, post, put, delete entre outros) paralidar com o gerenciamento de recursos do servidor

* Usa qualquer protocolo para estrutura de dados (xml, jsone etc..)

[1. Introdução]$ _ [12/31]

Page 32: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> JSON

JSON -> JavaScript Object Notation

* Derivado do JavaScript

* Pode reduzir significativamente o payload de transferência

[1. Introdução]$ _ [13/31]

Page 33: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> JSON

JSON -> JavaScript Object Notation

* Derivado do JavaScript

* Pode reduzir significativamente o payload de transferência

[1. Introdução]$ _ [13/31]

Page 34: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> JSON

JSON -> JavaScript Object Notation

* Derivado do JavaScript

* Pode reduzir significativamente o payload de transferência

[1. Introdução]$ _ [13/31]

Page 35: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> Restrições e Características REST

* Separação entre cliente e servidor (pull protocol )

* Stateless

* Cacheable

* Uniform Interface

[1. Introdução]$ _ [14/31]

Page 36: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> Restrições e Características REST

* Separação entre cliente e servidor (pull protocol )

* Stateless

* Cacheable

* Uniform Interface

[1. Introdução]$ _ [14/31]

Page 37: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> Restrições e Características REST

* Separação entre cliente e servidor (pull protocol )

* Stateless

* Cacheable

* Uniform Interface

[1. Introdução]$ _ [14/31]

Page 38: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> Restrições e Características REST

* Separação entre cliente e servidor (pull protocol )

* Stateless

* Cacheable

* Uniform Interface

[1. Introdução]$ _ [14/31]

Page 39: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> Akiry Tech

Akiry Plataforma de distribuição de vídeos sob demanda(vod).

[1. Introdução]$ _ [15/31]

Page 40: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> Akiry Tech

[1. Introdução]$ _ [16/31]

Page 41: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> Akiry Tech

(a) IcompTV(b) TVUfamPlay

Figura: Akiry Cases

[1. Introdução]$ _ [17/31]

Page 42: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> RESTful API

Consiste em dois conceitos principais:

* Recurso = Objeto associado com data ou identificado comuma URI

* Representação = Forma como o recurso é mostrado

[1. Introdução]$ _ [18/31]

Page 43: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> Design uma API

O design de uma API RESTful para um blog:

[1. Introdução]$ _ [19/31]

Page 44: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> Boas Práticas para APIs

Um investimento em conhecimento sempre paga osmelhores juros. (Benjamin Franklin)

Nemeth [2017].[2. Boas Práticas]$ _ [20/31]

Page 45: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> Métodos HTTP e Recursos da API

Dicas

! Uso de verbos HTTP: POST, PUT, GET, PATCH ou DELETE

! Separar a API em recursos semânticos

! Seguir padrão no uso dos verbos e nomes de recursos

! As versões da API podem ser passadas na url ou nocabeçalho da requisição

Cuidados

% Não usar verbos para identificar recursos da API

% Não há regra que diga se o recurso deve estar no singularou plural

[2. Boas Práticas]$ _ [21/31]

Page 46: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> Métodos HTTP e Recursos da API

Dicas

! Uso de verbos HTTP: POST, PUT, GET, PATCH ou DELETE

! Separar a API em recursos semânticos

! Seguir padrão no uso dos verbos e nomes de recursos

! As versões da API podem ser passadas na url ou nocabeçalho da requisição

Cuidados

% Não usar verbos para identificar recursos da API

% Não há regra que diga se o recurso deve estar no singularou plural

[2. Boas Práticas]$ _ [21/31]

Page 47: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> Métodos HTTP e Recursos da API

Dicas

! Uso de verbos HTTP: POST, PUT, GET, PATCH ou DELETE

! Separar a API em recursos semânticos

! Seguir padrão no uso dos verbos e nomes de recursos

! As versões da API podem ser passadas na url ou nocabeçalho da requisição

Cuidados

% Não usar verbos para identificar recursos da API

% Não há regra que diga se o recurso deve estar no singularou plural

[2. Boas Práticas]$ _ [21/31]

Page 48: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> Métodos HTTP e Recursos da API

Dicas

! Uso de verbos HTTP: POST, PUT, GET, PATCH ou DELETE

! Separar a API em recursos semânticos

! Seguir padrão no uso dos verbos e nomes de recursos

! As versões da API podem ser passadas na url ou nocabeçalho da requisição

Cuidados

% Não usar verbos para identificar recursos da API

% Não há regra que diga se o recurso deve estar no singularou plural

[2. Boas Práticas]$ _ [21/31]

Page 49: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> Métodos HTTP e Recursos da API

Dicas

! Uso de verbos HTTP: POST, PUT, GET, PATCH ou DELETE

! Separar a API em recursos semânticos

! Seguir padrão no uso dos verbos e nomes de recursos

! As versões da API podem ser passadas na url ou nocabeçalho da requisição

Cuidados

% Não usar verbos para identificar recursos da API

% Não há regra que diga se o recurso deve estar no singularou plural

[2. Boas Práticas]$ _ [21/31]

Page 50: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> Métodos HTTP e Recursos da API

Dicas

! Uso de verbos HTTP: POST, PUT, GET, PATCH ou DELETE

! Separar a API em recursos semânticos

! Seguir padrão no uso dos verbos e nomes de recursos

! As versões da API podem ser passadas na url ou nocabeçalho da requisição

Cuidados

% Não usar verbos para identificar recursos da API

% Não há regra que diga se o recurso deve estar no singularou plural

[2. Boas Práticas]$ _ [21/31]

Page 51: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> Códigos de Status HTTP

O uso correto do código de status HTTP1 deve ser enviado comoresposta.

Códigos

* 2xx: Se tudo ocorreu bem

* 3xx: Se o recurso foi movido

* 4xx: Se a requisição não pode ser completada por um errodo cliente (ex: recurso não existe)

* 5xx: Se algo ocorreu no lado da API (ex: exceções)

1https://en.wikipedia.org/wiki/List_of_HTTP_status_codes

[2. Boas Práticas]$ _ [22/31]

Page 52: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> Cabeçalhos HTTP

Anexar metadados sobre as requisições que serão enviadas nocabeçalho HTTP2

Dicas

! Paginação

! Autenticação

2https://en.wikipedia.org/wiki/List_of_HTTP_header_fields

[2. Boas Práticas]$ _ [23/31]

Page 53: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> Escolha do Framework

O framework deve estar de acordo com as necessidades da API:

Figura: Frameworks Node.js

[2. Boas Práticas]$ _ [24/31]

Page 54: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> Restify

Usado em:

! npm3

! Netflix4

3https://www.npmjs.com/4https://netflix.com

[2. Boas Práticas]$ _ [25/31]

Page 55: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> Documentação da API

Projetos para Documentação

* APIDOC5

* API Blueprint6

* Swagger7

5http://apidocjs.com/6https://apiblueprint.org/7http://swagger.io/

[2. Boas Práticas]$ _ [26/31]

Page 56: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> APIs para Inspiração

Projetos para Documentação

* Github8

* Digital Ocean9

* Stripe10

* Iugu11

8https://developer.github.com/v3/9https://developers.digitalocean.com/documentation/v2/#introduction

10https://stripe.com/docs/api11https://iugu.com/referencias/api

[2. Boas Práticas]$ _ [27/31]

Page 57: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> Hands-on

[3. Hands-on]$ _ [28/31]

Page 58: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> Ambiente

Criação de ambiente

npm e nodejs$ curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash-$ sudo apt-get install -y nodejs

Curl$ sudo apt-get install curl

PostmanBaixar em site oficial12

12https://www.getpostman.com/

[3. Hands-on]$ _ [29/31]

Page 59: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

Hora de Codificação!

Page 60: >>>RESTful API >>>Com Node.js e Restify · JSON -> JavaScript Object Notation *Derivado do JavaScript *Pode reduzir significativamente o payload de transferência [1. Introdução]$

>>> Referências

G. Nemeth. 10 best practices for writing node.js rest apis.https://blog.risingstack.com/10-best-practices-for-writing-node-js-rest-apis/, 2017.Accessed: 2017-03-28.

[5. Referências]$ _ [31/31]