No mundo das ap is com Restful webservices

Post on 23-Jan-2018

328 views 2 download

Transcript of No mundo das ap is com Restful webservices

No mundo das APIs com RESTful

Opa!Sou o Waldemar Neto

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

2

Sobre essa pessoa

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

3

Conrad Caine

Argentina

Pelotas

Alemanha

4

Ta mas e ai?O que é uma API?

5

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

6

7

Mas e o tal de RESTful aquele?

8

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

9

A historia do homem e seu site

Que queria ter uma API.

10

O Personagem11

O site12

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

13

EMPRESA QUE FAZ APPS MOBILE

14

EMPRESA COM IMAGEM DESNECESSARIAMENTE GRANDE QUE FAZ SITES

15

E foi feito...

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

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

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

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

Bora integrar com o mobile!

pensou então o jovem Leonardo.

21

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

O Jovem Leonardo não

desiste e vai em busca de outra

empresa para fazer sua API

EMPRESA COM GENTE QUE SABE TUDO DE RESTful

24

A caminho do RESTful

(Fonte: M. Richardson, Rest In Practice)

25

Entendendo o dominio

Quem são os recursos?

27

E os dados?

28

Construindo a APIDefinindo rotas, metadata e tudo mais.

29

● SSL● Subdominio● versionamento

Definindo uma rota com boas práticas

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

30

● 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

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

32

Análisando a resposta33

Análisando a resposta (Headers e status)34

● 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

Acessando um recurso por referencia

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

36

Navegando por relações

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

37

Query parameters

● Filtros● Tokens● Relações

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

38

Criando um recurso

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

39

Reposta do POST de criação

40

Atualizando um recurso

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

(resposta sera 200, sem header de location)

41

Atualizando um recurso(parcial)

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

(resposta sera 200, sem header de location)

42

Deletando um recurso

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

43

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

ERROSComo tratamos?

45

Validações de formulário

46

Dados inválidos

47

Mas e os relacionamentos entre

recursos?

48

49

Ta mas e se o json ficar grande?

50

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

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

51

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

52

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

53

HATEOAS

54

E a API foi finalizada

E foi integrada com sucesso!

56

Thanks!Perguntas?

https://github.com/waldemarnt

https://twitter.com/waldemarnt

https://fb.com/waldemarnt

http://walde.co/

57