No mundo das ap is com Restful webservices

57
No mundo das APIs com RESTful

Transcript of No mundo das ap is com Restful webservices

Page 1: No mundo das ap is com Restful webservices

No mundo das APIs com RESTful

Page 2: No mundo das ap is com Restful webservices

Opa!Sou o Waldemar Neto

Me encontrem na deepweb como @waldemarnt Também tem o blog tipo site http://walde.co/

2

Page 3: No mundo das ap is com Restful webservices

Sobre essa pessoa

▣ Gaúcho de Pelotas▣ Desenvolvedor▣ 6 anos de mercado▣ Focado na área web, APIs▣ Contribuidor

3

Page 4: No mundo das ap is com Restful webservices

Conrad Caine

Argentina

Pelotas

Alemanha

4

Page 5: No mundo das ap is com Restful webservices

Ta mas e ai?O que é uma API?

5

Page 6: No mundo das ap is com Restful webservices

‘’“Application Program Interface, é uma interface para interação com o software sem se envolver na implementação.”

6

Page 7: No mundo das ap is com Restful webservices

7

Page 8: No mundo das ap is com Restful webservices

Mas e o tal de RESTful aquele?

8

Page 9: No mundo das ap is com Restful webservices

‘’“Representational State Transfer, é um padrão de API para Web que usa os beneficios do protocolo HTTP para facilitar a comunicação.”

9

Page 10: No mundo das ap is com Restful webservices

A historia do homem e seu site

Que queria ter uma API.

10

Page 11: No mundo das ap is com Restful webservices

O Personagem11

Page 12: No mundo das ap is com Restful webservices

O site12

Page 13: No mundo das ap is com Restful webservices

NecessidadeAPI para administrar e acessar o conteúdo do site pelo celular.

13

Page 14: No mundo das ap is com Restful webservices

EMPRESA QUE FAZ APPS MOBILE

14

Page 15: No mundo das ap is com Restful webservices

EMPRESA COM IMAGEM DESNECESSARIAMENTE GRANDE QUE FAZ SITES

15

Page 16: No mundo das ap is com Restful webservices

E foi feito...

Page 17: No mundo das ap is com Restful webservices

Acessando as noticias via API

● http://souwebpel.com.br/getNews○ Pega todas as noticias

● http://souwebpel.com.br/getNewsWithThumbnails○ Pega todas as noticias com thumbnails

● http://souwebpel.com.br/getNewsWithInformations○ Pega todas as noticias com informações sociais

● http://souwebpel.com.br/getNewsById○ Pega uma noticia pelo id

17

Page 18: No mundo das ap is com Restful webservices

Inserindo as noticias

● http://souwebpel.com.br/addNews○ Adiciona uma nova noticia

● http://souwebpel.com.br/addNewsWithThumbnail○ Url para adicionar uma noticia com imagem

● http://souwebpel.com.br/EditNewsById?id=1○ Edita uma noticia pelo id

18

Page 19: No mundo das ap is com Restful webservices

E assim foi para a área de agencias

● http://souwebpel.com.br/getAllCompanies○ Pega a lista de todas as empresas cadastradas

● http://souwebpel.com.br/addNewCompany○ Adiciona uma nova empresa

● http://souwebpel.com.br/EditCompanyById?id=1○ Edita uma empresa pelo id

19

Page 20: No mundo das ap is com Restful webservices

E assim foi também para a área de vagas

● http://souwebpel.com.br/getAllJobs○ Pega a lista de todos os empregos

● http://souwebpel.com.br/addNewJob○ Adiciona um novo emprego

● http://souwebpel.com.br/addNewJobWithImage○ Adiciona um novo emprego com imagem

● http://souwebpel.com.br/editJobById?id=1○ Edita um emprego pelo id

20

Page 21: No mundo das ap is com Restful webservices

Bora integrar com o mobile!

pensou então o jovem Leonardo.

21

Page 22: No mundo das ap is com Restful webservices

Reação dos desenvolvedores mobile a o ver a API22

Page 23: No mundo das ap is com Restful webservices

O Jovem Leonardo não

desiste e vai em busca de outra

empresa para fazer sua API

Page 24: No mundo das ap is com Restful webservices

EMPRESA COM GENTE QUE SABE TUDO DE RESTful

24

Page 25: No mundo das ap is com Restful webservices

A caminho do RESTful

(Fonte: M. Richardson, Rest In Practice)

25

Page 26: No mundo das ap is com Restful webservices

Entendendo o dominio

Page 27: No mundo das ap is com Restful webservices

Quem são os recursos?

27

Page 28: No mundo das ap is com Restful webservices

E os dados?

28

Page 29: No mundo das ap is com Restful webservices

Construindo a APIDefinindo rotas, metadata e tudo mais.

29

Page 30: No mundo das ap is com Restful webservices

● SSL● Subdominio● versionamento

Definindo uma rota com boas práticas

https://api.souwebpel.com.br/v1/

30

Page 31: No mundo das ap is com Restful webservices

● HTTP POST > CREATE● HTTP PUT > UPDATE● HTTP GET > READ● HTTP DELETE > DELETE● HTTP PATH > UPDATE (parcial)● HTTP HEAD > Informações da rota

Verbos HTTP

31

Page 32: No mundo das ap is com Restful webservices

Chamada para o recursoGET https://api.souwebpel.com.br/v1/news

32

Page 33: No mundo das ap is com Restful webservices

Análisando a resposta33

Page 34: No mundo das ap is com Restful webservices

Análisando a resposta (Headers e status)34

Page 35: No mundo das ap is com Restful webservices

● Informacional 1xx○ 102 Processing

● Sucesso 2xx○ 200 > OK○ 201 > Created

● Redirecionamento 3xx○ 301 > Moved

● Erros no lado do cliente 4xx○ 400 > Bad Request○ 401 > Unauthorized○ 404 > Not Found○ 405 > Method Not Allowed

● Erros no lado do servidor 5xx○ 500 > Internal Error

● https://github.com/waldemarnt/http-status-codes

HTTP Status codes (mais comuns)

35

Page 36: No mundo das ap is com Restful webservices

Acessando um recurso por referencia

GET https://api.souwebpel.com.br/v1/news/1

36

Page 37: No mundo das ap is com Restful webservices

Navegando por relações

GET https://api.souwebpel.com.br/v1/news/1/tags

37

Page 38: No mundo das ap is com Restful webservices

Query parameters

● Filtros● Tokens● Relações

GET https://api.souwebpel.com.br/v1/news?publishedAt=2015

38

Page 39: No mundo das ap is com Restful webservices

Criando um recurso

POST https://api.souwebpel.com.br/v1/news

39

Page 40: No mundo das ap is com Restful webservices

Reposta do POST de criação

40

Page 41: No mundo das ap is com Restful webservices

Atualizando um recurso

PUT https://api.souwebpel.com.br/v1/news/3

(resposta sera 200, sem header de location)

41

Page 42: No mundo das ap is com Restful webservices

Atualizando um recurso(parcial)

PATH https://api.souwebpel.com.br/v1/news/3

(resposta sera 200, sem header de location)

42

Page 43: No mundo das ap is com Restful webservices

Deletando um recurso

DELETE https://api.souwebpel.com.br/v1/news/3

43

Page 44: No mundo das ap is com Restful webservices

Informaçes do recurso

HEAD https://api.souwebpel.com.br/v1/news

● Ultima modificação● Content-length● Content-type● Tipo de conexão● Tipos de requisição aceitas

44

Page 45: No mundo das ap is com Restful webservices

ERROSComo tratamos?

45

Page 46: No mundo das ap is com Restful webservices

Validações de formulário

46

Page 47: No mundo das ap is com Restful webservices

Dados inválidos

47

Page 48: No mundo das ap is com Restful webservices

Mas e os relacionamentos entre

recursos?

48

Page 49: No mundo das ap is com Restful webservices

49

Page 50: No mundo das ap is com Restful webservices

Ta mas e se o json ficar grande?

50

Page 51: No mundo das ap is com Restful webservices

OPÇÃO 1: relações sob demanda

GET https://api.souwebpel.com.br/v1/news?extends=author,address

51

Page 52: No mundo das ap is com Restful webservices

OPÇÃO 2: HATEOASMas que $#$@#$ é essa?

52

Page 53: No mundo das ap is com Restful webservices

‘’“Hypermedia as the Engine of Application State, uso de hipermídias para navegar entre relações.”

53

Page 54: No mundo das ap is com Restful webservices

HATEOAS

54

Page 55: No mundo das ap is com Restful webservices

E a API foi finalizada

Page 56: No mundo das ap is com Restful webservices

E foi integrada com sucesso!

56

Page 57: No mundo das ap is com Restful webservices

Thanks!Perguntas?

https://github.com/waldemarnt

https://twitter.com/waldemarnt

https://fb.com/waldemarnt

http://walde.co/

57