Restful APIs com Spring 3
Upcoming SlideShare
Loading in...5
×
 

Restful APIs com Spring 3

on

  • 536 views

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

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

Statistics

Views

Total Views
536
Views on SlideShare
532
Embed Views
4

Actions

Likes
0
Downloads
13
Comments
0

2 Embeds 4

http://www.linkedin.com 2
https://www.linkedin.com 2

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Restful APIs com Spring 3 Restful APIs com Spring 3 Presentation Transcript

  • 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 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
  • 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
  • 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
  • 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
  • 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]
  • Globalcode – Open4education GET ● Seguro ● Idempotente ● Aceita headers como ○ Accept ○ If-None-Match ● Responde com ○ 200, 304 ou 404… ○ Content-Type ○ Content-Length ○ ETag
  • Globalcode – Open4education GET
  • 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
  • Globalcode – Open4education GET - Exemplo URI: /api/games/1 METHOD: Get HEADERS: Accept: application/json Status Code: 404 NOT FOUND
  • Globalcode – Open4education GET - Exemplo URI: /api/games/1 METHOD: Get HEADERS: Accept: application/json Status Code: 304 Moved HEADERS: Location: /api/archivedGames/1
  • Globalcode – Open4education PUT ● Idempotente ● Aceita headers como ○ Accept ○ If-Match ● Responde com ○ 200, 202, 400, 404, 409, 500… ○ Content-Type ○ Content-Length ○ ETag
  • Globalcode – Open4education PUT
  • Globalcode – Open4education PUT - Exemplo URI: /api/games/1 METHOD: Put HEADERS: Accept: application/json Content: { status: ‘OVER’ } Status Code: 200 OK
  • 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” }
  • 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…
  • 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 HEADERS: Location: /api/archivedGames/1
  • 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
  • Globalcode – Open4education POST
  • Globalcode – Open4education POST - Exemplo URI: /api/games METHOD: Post HEADERS: Accept: application/json Status Code: 201 CREATED HEADERS: Location: /api/games/3 *CRIAUMNOVOJOGOVAZIO
  • 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
  • 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 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
  • Globalcode – Open4education Jogo-da-velha
  • Globalcode – Open4education Spring MVC ● Centrado em um servlet que dispacha as requisições - FrontController; ● DispatcherServlet; ● Integrado com o container IoC do Spring;
  • 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 links com base em métodos do Controller
  • Globalcode – Open4education Spring HATEOAS ● ResourceSupport, ResourceAssemblerSupport
  • Globalcode – Open4education Spring MVC Test ● Suporte para testes de client e server-side ● Requisições utilizando o DispatcherServlet ● API fluente para os asserts
  • 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” devem ser implementadas para todos os recursos ● Adicionar “métodos” que não se encaixam com os Verbos HTTP, ou métodos padrões
  • Globalcode – Open4education Perguntas?
  • 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