0
Globalcode – Open4education
Restful APIs com Spring 3
Globalcode – Open4education
Restful APIs com Spring 3
Alex Miranda
Software Engineer
Guilherme Branco
Software Engineer
Globalcode – Open4education
REpresentational State Transfer
● Comunicação Cliente - Servidor
● Estilo Arquitetural
● Termo...
Globalcode – Open4education
Porque REST?
● Simples, leve e escalável
● Orientado a recursos
● Sem estado, cada requisição ...
Globalcode – Open4education
Porque Spring?
● Plataforma completa para desenvolvimento de
aplicações em Java, groovy ou out...
Globalcode – Open4education
Princípios do REST
● Expõe recursos logicamente organizados como uma
estrutura de um sistema d...
Globalcode – Open4education
Conceito de Recursos
● É tudo aquilo que o seu sistema expõe
● Tudo é um recurso
○ Usuários, a...
Globalcode – Open4education
GET
● Seguro
● Idempotente
● Aceita headers como
○ Accept
○ If-None-Match
● Responde com
○ 200...
Globalcode – Open4education
GET
Globalcode – Open4education
GET - Exemplo
URI: /api/games/1
METHOD: Get
HEADERS:
Accept: application/json
Status Code: 200...
Globalcode – Open4education
GET - Exemplo
URI: /api/games/1
METHOD: Get
HEADERS:
Accept: application/json
Status Code: 404...
Globalcode – Open4education
GET - Exemplo
URI: /api/games/1
METHOD: Get
HEADERS:
Accept: application/json
Status Code: 304...
Globalcode – Open4education
PUT
● Idempotente
● Aceita headers como
○ Accept
○ If-Match
● Responde com
○ 200, 202, 400, 40...
Globalcode – Open4education
PUT
Globalcode – Open4education
PUT - Exemplo
URI: /api/games/1
METHOD: Put
HEADERS:
Accept: application/json
Content: { statu...
Globalcode – Open4education
PUT - Exemplo
URI: /api/games/1
METHOD: Put
HEADERS:
Accept: application/json
Content: { statu...
Globalcode – Open4education
DELETE
● Pode ser assíncrono
● Não aceita Message Body
● Não aceita Response Body *
● Aceita h...
Globalcode – Open4education
DELETE
Globalcode – Open4education
DELETE - Exemplo
URI: /api/games/1
METHOD: Delete
Status Code: 200 OK
* Side-effect
Globalcode – Open4education
DELETE - Exemplo
URI: /api/games/1
METHOD: Delete
Status Code: 202 ACCEPTED
Globalcode – Open4education
DELETE - Exemplo
URI: /api/games/1
METHOD: Delete
Status Code: 301 MOVED PERMANENTLY
302 MOVED...
Globalcode – Open4education
POST
● Criar um recurso no servidor
● Enviar uma mensagem contendo
uma requisição para uma
ope...
Globalcode – Open4education
POST
Globalcode – Open4education
POST - Exemplo
URI: /api/games
METHOD: Post
HEADERS:
Accept: application/json
Status Code: 201...
Globalcode – Open4education
POST - Exemplo
URI: /api/games/3
METHOD: Post
HEADERS:
Accept: application/json
Content Type: ...
Globalcode – Open4education
HIPERMEDIA
● Páginas da Web
● Diversos formatos
● Permite descobrir
operações disponíveis
Globalcode – Open4education
Modelo de Maturidade
http://martinfowler.com/articles/richardsonMaturityModel.html
Globalcode – Open4education
HATEOAS
● Hypermedia As The Engine Of Application State
● A interação do cliente com servidor ...
Globalcode – Open4education
Jogo-da-velha
Globalcode – Open4education
Spring MVC
● Centrado em um servlet que dispacha as
requisições - FrontController;
● Dispatche...
Globalcode – Open4education
Spring MVC
Get - api/games/1
Mapeamento no controller - api/games
Post - api/games/1
Globalcode – Open4education
Spring HATEOAS
● Fornece APIs que facilitam a criação das
representações e links;
● Criação de...
Globalcode – Open4education
Spring HATEOAS
● ResourceSupport, ResourceAssemblerSupport
Globalcode – Open4education
Spring MVC Test
● Suporte para testes de client e server-side
● Requisições utilizando o Dispa...
Globalcode – Open4education
Spring MVC Test
Globalcode – Open4education
Spring MVC Test
Globalcode – Open4education
DEMO
1. Projeto
2. Rest shell
3. Aplicação HTML5 + JavaScript
Globalcode – Open4education
Erros clássicos
● Expor estritamente todas as entidades do modelo
● Achar que todas as “ações”...
Globalcode – Open4education
Perguntas?
Globalcode – Open4education
Obrigado
br.linkedin.com/pub/guilherme-branco/26/775/2a4
github.com/gpbranco
twitter.com/guipb...
Upcoming SlideShare
Loading in...5
×

Restful APIs com Spring 3

521

Published on

Apresentação feita no SerraStartec 2013 em Lages/SC 05/10/2013. O objetivo foi uma introdução as REST webservices utilizando o Spring.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
521
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
21
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Restful APIs com Spring 3"

  1. 1. Globalcode – Open4education Restful APIs com Spring 3
  2. 2. Globalcode – Open4education Restful APIs com Spring 3 Alex Miranda Software Engineer Guilherme Branco Software Engineer
  3. 3. Globalcode – Open4education REpresentational State Transfer ● Comunicação Cliente - Servidor ● Estilo Arquitetural ● Termo cunhado por Roy Fielding em 2000 ● Interface web simples que utiliza diversos formatos de dados, sem abstrações adicionais ● Ênfase nos recursos e sem estado
  4. 4. Globalcode – Open4education Porque REST? ● Simples, leve e escalável ● Orientado a recursos ● Sem estado, cada requisição contém toda informação necessária ● Utiliza todo o poder da Web – Restful ● Fácil de começar a desenvolver uma aplicação que conecte inúmeros clientes ● Suporta diversas plataformas, dispositivos ou tipos de clientes
  5. 5. Globalcode – Open4education Porque Spring? ● Plataforma completa para desenvolvimento de aplicações em Java, groovy ou outras linguagens que rodam na JVM ● Facilitou o desenvolvimento de aplicações enterprise ● Permite que o desenvolvedor foque no negócio ● Um dos frameworks mais populares e com comunidade ativa ● Open-source ● Spring MVC Test framework
  6. 6. Globalcode – Open4education Princípios do REST ● Expõe recursos logicamente organizados como uma estrutura de um sistema de arquivos, fácil de ser entendido ● O cliente acessa representações de um estado do recurso ● As mensagens utilizam métodos HTTP padrões (GET, POST, PUT e DELETE) ● O servidor é sem estado, ficando a cargo do cliente manter estado entre requisições ao servidor ● Utiliza hipermedia tanto para representação de estados, como para transições deste estado
  7. 7. Globalcode – Open4education Conceito de Recursos ● É tudo aquilo que o seu sistema expõe ● Tudo é um recurso ○ Usuários, assinatura, autenticação, carrinho de compra, contagem de uma produtos… ● Deve ser independente de sua representação ○ /api/users/1001.html ○ /api/users/1001.json ○ /api/users/1001 [Accept: application/xml]
  8. 8. Globalcode – Open4education GET ● Seguro ● Idempotente ● Aceita headers como ○ Accept ○ If-None-Match ● Responde com ○ 200, 304 ou 404… ○ Content-Type ○ Content-Length ○ ETag
  9. 9. Globalcode – Open4education GET
  10. 10. Globalcode – Open4education GET - Exemplo URI: /api/games/1 METHOD: Get HEADERS: Accept: application/json Status Code: 200 OK HEADERS: Content-Type: application/json Content-Length: 199 bytes
  11. 11. Globalcode – Open4education GET - Exemplo URI: /api/games/1 METHOD: Get HEADERS: Accept: application/json Status Code: 404 NOT FOUND
  12. 12. Globalcode – Open4education GET - Exemplo URI: /api/games/1 METHOD: Get HEADERS: Accept: application/json Status Code: 304 Moved HEADERS: Location: /api/archivedGames/1
  13. 13. Globalcode – Open4education PUT ● Idempotente ● Aceita headers como ○ Accept ○ If-Match ● Responde com ○ 200, 202, 400, 404, 409, 500… ○ Content-Type ○ Content-Length ○ ETag
  14. 14. Globalcode – Open4education PUT
  15. 15. Globalcode – Open4education PUT - Exemplo URI: /api/games/1 METHOD: Put HEADERS: Accept: application/json Content: { status: ‘OVER’ } Status Code: 200 OK
  16. 16. Globalcode – Open4education PUT - Exemplo URI: /api/games/1 METHOD: Put HEADERS: Accept: application/json Content: { status: ‘INVALID’ } Status Code: 400 BAD REQUEST Content: { status: 400, reason: “invalid data” }
  17. 17. Globalcode – Open4education DELETE ● Pode ser assíncrono ● Não aceita Message Body ● Não aceita Response Body * ● Aceita headers como ○ Accept ● Responde com ○ 200, 202, 404, 409, 500…
  18. 18. Globalcode – Open4education DELETE
  19. 19. Globalcode – Open4education DELETE - Exemplo URI: /api/games/1 METHOD: Delete Status Code: 200 OK * Side-effect
  20. 20. Globalcode – Open4education DELETE - Exemplo URI: /api/games/1 METHOD: Delete Status Code: 202 ACCEPTED
  21. 21. Globalcode – Open4education DELETE - Exemplo URI: /api/games/1 METHOD: Delete Status Code: 301 MOVED PERMANENTLY 302 MOVED HEADERS: Location: /api/archivedGames/1
  22. 22. Globalcode – Open4education POST ● Criar um recurso no servidor ● Enviar uma mensagem contendo uma requisição para uma operação ● Aceita headers como ○ Accept ● Responde com ○ 200, 202, 400, 500… ○ Content-Type ○ Content-Length ○ Location ○ ETag
  23. 23. Globalcode – Open4education POST
  24. 24. Globalcode – Open4education POST - Exemplo URI: /api/games METHOD: Post HEADERS: Accept: application/json Status Code: 201 CREATED HEADERS: Location: /api/games/3 *CRIAUMNOVOJOGOVAZIO
  25. 25. Globalcode – Open4education POST - Exemplo URI: /api/games/3 METHOD: Post HEADERS: Accept: application/json Content Type: application/json Content: { mark: ‘X’, position: ‘TopLeftCorner’ } Status Code: 200 CREATED *ENVIAJOGADAPARASERVIDOR
  26. 26. Globalcode – Open4education HIPERMEDIA ● Páginas da Web ● Diversos formatos ● Permite descobrir operações disponíveis
  27. 27. Globalcode – Open4education Modelo de Maturidade http://martinfowler.com/articles/richardsonMaturityModel.html
  28. 28. Globalcode – Open4education HATEOAS ● Hypermedia As The Engine Of Application State ● A interação do cliente com servidor se dá através de hypermedia ● A lista de links de um recurso deve ser dinâmica e refletir cada estado possível ● Diálogo entre cliente e servidor ● Desacopla cliente e servidor, permitindo que a API evolua independente
  29. 29. Globalcode – Open4education Jogo-da-velha
  30. 30. Globalcode – Open4education Spring MVC ● Centrado em um servlet que dispacha as requisições - FrontController; ● DispatcherServlet; ● Integrado com o container IoC do Spring;
  31. 31. Globalcode – Open4education Spring MVC Get - api/games/1 Mapeamento no controller - api/games Post - api/games/1
  32. 32. Globalcode – Open4education Spring HATEOAS ● Fornece APIs que facilitam a criação das representações e links; ● Criação de links com base em métodos do Controller
  33. 33. Globalcode – Open4education Spring HATEOAS ● ResourceSupport, ResourceAssemblerSupport
  34. 34. Globalcode – Open4education Spring MVC Test ● Suporte para testes de client e server-side ● Requisições utilizando o DispatcherServlet ● API fluente para os asserts
  35. 35. Globalcode – Open4education Spring MVC Test
  36. 36. Globalcode – Open4education Spring MVC Test
  37. 37. Globalcode – Open4education DEMO 1. Projeto 2. Rest shell 3. Aplicação HTML5 + JavaScript
  38. 38. Globalcode – Open4education Erros clássicos ● Expor estritamente todas as entidades do modelo ● Achar que todas as “ações” devem ser implementadas para todos os recursos ● Adicionar “métodos” que não se encaixam com os Verbos HTTP, ou métodos padrões
  39. 39. Globalcode – Open4education Perguntas?
  40. 40. Globalcode – Open4education Obrigado br.linkedin.com/pub/guilherme-branco/26/775/2a4 github.com/gpbranco twitter.com/guipbranco br.linkedin.com/in/mmirandaalex github.com/alexmiranda twitter.com/mmalx alexmiranda.net https://github.com/alexmiranda/tic-tac-toe-restful Alex Miranda Software Engineer Guilherme Branco Software Engineer
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×