SlideShare a Scribd company logo
1 of 30
 
REST em Java WebServices Ágeis, podeosos e fáceis Edgar Silva [email_address] @jedgarsilva
REST (#restfisl11)
Re presentational  S tate  T ransfer
Casos de Uso ,[object Object]
Web  (somente Web)?
Defina sua  semantica  de respostas (padrões XML, JSON, SEU)?
Arquiteturas baseadas em REST ,[object Object]
Orientado a Representações
Sem Estado (HTTP)(*)
Hypermedia (Design)
(*) Gambis
URI (Recursos) ,[object Object]
http://rest.fisl.org/11/palestrante
http://rest.fisl.org/11/palestrante/088 ,[object Object]
QueryStrings: Famosos ? Serviço do Fisl, edição 11, sessão de número 918
REST ,[object Object]
Não rodeie, por mais que você tente você não vai resolver tudo!
Lembre-se:
Simples  !=  Medíocre
4 Métodos para tudo resolve? ,[object Object]
POST
PUT
DELETE
Não esqueça que você já fez mágica também ... ,[object Object]
Design Rest  ,[object Object]
Put  – Escrita (insere/atualiza), idempontente
Delete  – Remover, idempontente
Post  – Não idempotente
Orientado a Representação ,[object Object],Cliente “ Eu gostaria” Accept (MIME type) Accept-Language Accept-Encoding Server “ Pra você eu tenho” Content-type  header (MIME type)

More Related Content

Viewers also liked

JUDCon 2010 - Innovative ideas for Integration Solutions through JBoss ESB
JUDCon 2010 - Innovative ideas for Integration Solutions through JBoss ESBJUDCon 2010 - Innovative ideas for Integration Solutions through JBoss ESB
JUDCon 2010 - Innovative ideas for Integration Solutions through JBoss ESBEdgar Silva
 
Diversos tipos de conocimiento. Dra. lorna cruz
Diversos tipos de conocimiento. Dra. lorna cruzDiversos tipos de conocimiento. Dra. lorna cruz
Diversos tipos de conocimiento. Dra. lorna cruzug-dipa
 
Metodología de investigación 2016
Metodología de investigación 2016Metodología de investigación 2016
Metodología de investigación 2016Luz Ochoa
 
Tipo de Hipótesis
Tipo de HipótesisTipo de Hipótesis
Tipo de Hipótesisug-dipa
 
LINE FOLLOWER ROBOT
LINE FOLLOWER ROBOTLINE FOLLOWER ROBOT
LINE FOLLOWER ROBOTrehaan ukaye
 
Paradigmas de la Metodología de la Investigación
Paradigmas de la Metodología de la InvestigaciónParadigmas de la Metodología de la Investigación
Paradigmas de la Metodología de la Investigaciónug-dipa
 
Metodología de la Investigación - Paradigmas de la Metodología de la Investig...
Metodología de la Investigación - Paradigmas de la Metodología de la Investig...Metodología de la Investigación - Paradigmas de la Metodología de la Investig...
Metodología de la Investigación - Paradigmas de la Metodología de la Investig...ug-dipa
 
Historia, cultura y medicina tradicional esteli nicaragua (bayardo gamez)
Historia, cultura y medicina tradicional esteli nicaragua (bayardo gamez)Historia, cultura y medicina tradicional esteli nicaragua (bayardo gamez)
Historia, cultura y medicina tradicional esteli nicaragua (bayardo gamez)Ciudades Hermanas Europa-Estelí
 
El Fundamentalismo Científico - Dra. Eneida Matos
El Fundamentalismo Científico - Dra. Eneida MatosEl Fundamentalismo Científico - Dra. Eneida Matos
El Fundamentalismo Científico - Dra. Eneida Matosug-dipa
 
Riqueza y Pobreza en Nicaragua y Estelí - Alfonso Malespín
Riqueza y Pobreza en Nicaragua y Estelí - Alfonso MalespínRiqueza y Pobreza en Nicaragua y Estelí - Alfonso Malespín
Riqueza y Pobreza en Nicaragua y Estelí - Alfonso MalespínCiudades Hermanas Europa-Estelí
 
Multisensor Fusion and Integration - pres
Multisensor Fusion and Integration - presMultisensor Fusion and Integration - pres
Multisensor Fusion and Integration - presPraneel Chand
 
Sistemas Operativos
Sistemas OperativosSistemas Operativos
Sistemas Operativoserick lopez
 
Situación de Aprendizaje Crítico
Situación de Aprendizaje CríticoSituación de Aprendizaje Crítico
Situación de Aprendizaje CríticoSandra Pimentel
 
Como construir un aparato crìtico en una investigación
Como construir un aparato crìtico en una  investigaciónComo construir un aparato crìtico en una  investigación
Como construir un aparato crìtico en una investigaciónALEGART
 

Viewers also liked (16)

Educación y psicoterrapia
Educación y psicoterrapiaEducación y psicoterrapia
Educación y psicoterrapia
 
Webquest
WebquestWebquest
Webquest
 
JUDCon 2010 - Innovative ideas for Integration Solutions through JBoss ESB
JUDCon 2010 - Innovative ideas for Integration Solutions through JBoss ESBJUDCon 2010 - Innovative ideas for Integration Solutions through JBoss ESB
JUDCon 2010 - Innovative ideas for Integration Solutions through JBoss ESB
 
Diversos tipos de conocimiento. Dra. lorna cruz
Diversos tipos de conocimiento. Dra. lorna cruzDiversos tipos de conocimiento. Dra. lorna cruz
Diversos tipos de conocimiento. Dra. lorna cruz
 
Metodología de investigación 2016
Metodología de investigación 2016Metodología de investigación 2016
Metodología de investigación 2016
 
Tipo de Hipótesis
Tipo de HipótesisTipo de Hipótesis
Tipo de Hipótesis
 
LINE FOLLOWER ROBOT
LINE FOLLOWER ROBOTLINE FOLLOWER ROBOT
LINE FOLLOWER ROBOT
 
Paradigmas de la Metodología de la Investigación
Paradigmas de la Metodología de la InvestigaciónParadigmas de la Metodología de la Investigación
Paradigmas de la Metodología de la Investigación
 
Metodología de la Investigación - Paradigmas de la Metodología de la Investig...
Metodología de la Investigación - Paradigmas de la Metodología de la Investig...Metodología de la Investigación - Paradigmas de la Metodología de la Investig...
Metodología de la Investigación - Paradigmas de la Metodología de la Investig...
 
Historia, cultura y medicina tradicional esteli nicaragua (bayardo gamez)
Historia, cultura y medicina tradicional esteli nicaragua (bayardo gamez)Historia, cultura y medicina tradicional esteli nicaragua (bayardo gamez)
Historia, cultura y medicina tradicional esteli nicaragua (bayardo gamez)
 
El Fundamentalismo Científico - Dra. Eneida Matos
El Fundamentalismo Científico - Dra. Eneida MatosEl Fundamentalismo Científico - Dra. Eneida Matos
El Fundamentalismo Científico - Dra. Eneida Matos
 
Riqueza y Pobreza en Nicaragua y Estelí - Alfonso Malespín
Riqueza y Pobreza en Nicaragua y Estelí - Alfonso MalespínRiqueza y Pobreza en Nicaragua y Estelí - Alfonso Malespín
Riqueza y Pobreza en Nicaragua y Estelí - Alfonso Malespín
 
Multisensor Fusion and Integration - pres
Multisensor Fusion and Integration - presMultisensor Fusion and Integration - pres
Multisensor Fusion and Integration - pres
 
Sistemas Operativos
Sistemas OperativosSistemas Operativos
Sistemas Operativos
 
Situación de Aprendizaje Crítico
Situación de Aprendizaje CríticoSituación de Aprendizaje Crítico
Situación de Aprendizaje Crítico
 
Como construir un aparato crìtico en una investigación
Como construir un aparato crìtico en una  investigaciónComo construir un aparato crìtico en una  investigación
Como construir un aparato crìtico en una investigación
 

More from Edgar Silva

API Methodology by Skalena
API Methodology by SkalenaAPI Methodology by Skalena
API Methodology by SkalenaEdgar Silva
 
Flyweigth - Arquitetura de Referência para Open Banking Brasil Fase 1
Flyweigth - Arquitetura de Referência para Open Banking Brasil Fase 1Flyweigth - Arquitetura de Referência para Open Banking Brasil Fase 1
Flyweigth - Arquitetura de Referência para Open Banking Brasil Fase 1Edgar Silva
 
Skalena - Finance Business Unit
Skalena - Finance Business UnitSkalena - Finance Business Unit
Skalena - Finance Business UnitEdgar Silva
 
Plataforma de Consentimento (LGDP) Skalena
Plataforma de Consentimento (LGDP) SkalenaPlataforma de Consentimento (LGDP) Skalena
Plataforma de Consentimento (LGDP) SkalenaEdgar Silva
 
Casos de Sucesso WSO2 no Governo Brasileiro
Casos de Sucesso WSO2 no Governo BrasileiroCasos de Sucesso WSO2 no Governo Brasileiro
Casos de Sucesso WSO2 no Governo BrasileiroEdgar Silva
 
DevOps Tour SP 2019
DevOps Tour SP 2019DevOps Tour SP 2019
DevOps Tour SP 2019Edgar Silva
 
Skalena - Overview de Soluções
Skalena - Overview de Soluções Skalena - Overview de Soluções
Skalena - Overview de Soluções Edgar Silva
 
WSO2 Governance Registry 5.4.0 - Overview
WSO2 Governance Registry 5.4.0 - OverviewWSO2 Governance Registry 5.4.0 - Overview
WSO2 Governance Registry 5.4.0 - OverviewEdgar Silva
 
WSO2 Enterprise Integrator 6.1 - Integração na Era da Transformação
WSO2 Enterprise Integrator 6.1 - Integração na Era da TransformaçãoWSO2 Enterprise Integrator 6.1 - Integração na Era da Transformação
WSO2 Enterprise Integrator 6.1 - Integração na Era da TransformaçãoEdgar Silva
 
Transformação Digital de Forma Pragmatica WSO2
Transformação Digital de Forma Pragmatica WSO2Transformação Digital de Forma Pragmatica WSO2
Transformação Digital de Forma Pragmatica WSO2Edgar Silva
 
WSO2 Novo Modelo de Subscrições e Produtos 2017
WSO2 Novo Modelo de Subscrições e Produtos 2017WSO2 Novo Modelo de Subscrições e Produtos 2017
WSO2 Novo Modelo de Subscrições e Produtos 2017Edgar Silva
 
WSO2 API Manager 2.0 - Overview
WSO2 API Manager 2.0 - Overview WSO2 API Manager 2.0 - Overview
WSO2 API Manager 2.0 - Overview Edgar Silva
 
Workshop WSO2 BPS 3.5.x - BPMN
Workshop WSO2 BPS 3.5.x - BPMN Workshop WSO2 BPS 3.5.x - BPMN
Workshop WSO2 BPS 3.5.x - BPMN Edgar Silva
 
Workshop MSF4J - Getting Started with Microservices and Java
Workshop MSF4J - Getting Started with Microservices and JavaWorkshop MSF4J - Getting Started with Microservices and Java
Workshop MSF4J - Getting Started with Microservices and JavaEdgar Silva
 
WSO2 API Manager : Going beyond the just API Management
WSO2 API Manager : Going beyond the just API ManagementWSO2 API Manager : Going beyond the just API Management
WSO2 API Manager : Going beyond the just API ManagementEdgar Silva
 
Workshop/Tutorial WSO2 Micro Services Server
Workshop/Tutorial WSO2 Micro Services ServerWorkshop/Tutorial WSO2 Micro Services Server
Workshop/Tutorial WSO2 Micro Services ServerEdgar Silva
 
WSO2 Micro Services Server - Basic Workshop Part 1
WSO2 Micro Services Server - Basic Workshop Part 1WSO2 Micro Services Server - Basic Workshop Part 1
WSO2 Micro Services Server - Basic Workshop Part 1Edgar Silva
 
Conectando Turismo e Viagens - Plataforma WSO2
Conectando Turismo e Viagens - Plataforma WSO2Conectando Turismo e Viagens - Plataforma WSO2
Conectando Turismo e Viagens - Plataforma WSO2Edgar Silva
 
WSO2 Application Server como Alternativa ao Tomcat
WSO2 Application Server como Alternativa ao TomcatWSO2 Application Server como Alternativa ao Tomcat
WSO2 Application Server como Alternativa ao TomcatEdgar Silva
 

More from Edgar Silva (20)

API Methodology by Skalena
API Methodology by SkalenaAPI Methodology by Skalena
API Methodology by Skalena
 
Flyweigth - Arquitetura de Referência para Open Banking Brasil Fase 1
Flyweigth - Arquitetura de Referência para Open Banking Brasil Fase 1Flyweigth - Arquitetura de Referência para Open Banking Brasil Fase 1
Flyweigth - Arquitetura de Referência para Open Banking Brasil Fase 1
 
Skalena - Finance Business Unit
Skalena - Finance Business UnitSkalena - Finance Business Unit
Skalena - Finance Business Unit
 
Plataforma de Consentimento (LGDP) Skalena
Plataforma de Consentimento (LGDP) SkalenaPlataforma de Consentimento (LGDP) Skalena
Plataforma de Consentimento (LGDP) Skalena
 
Casos de Sucesso WSO2 no Governo Brasileiro
Casos de Sucesso WSO2 no Governo BrasileiroCasos de Sucesso WSO2 no Governo Brasileiro
Casos de Sucesso WSO2 no Governo Brasileiro
 
DevOps Tour SP 2019
DevOps Tour SP 2019DevOps Tour SP 2019
DevOps Tour SP 2019
 
Skalena - Overview de Soluções
Skalena - Overview de Soluções Skalena - Overview de Soluções
Skalena - Overview de Soluções
 
WSO2 Governance Registry 5.4.0 - Overview
WSO2 Governance Registry 5.4.0 - OverviewWSO2 Governance Registry 5.4.0 - Overview
WSO2 Governance Registry 5.4.0 - Overview
 
WSO2 Enterprise Integrator 6.1 - Integração na Era da Transformação
WSO2 Enterprise Integrator 6.1 - Integração na Era da TransformaçãoWSO2 Enterprise Integrator 6.1 - Integração na Era da Transformação
WSO2 Enterprise Integrator 6.1 - Integração na Era da Transformação
 
Transformação Digital de Forma Pragmatica WSO2
Transformação Digital de Forma Pragmatica WSO2Transformação Digital de Forma Pragmatica WSO2
Transformação Digital de Forma Pragmatica WSO2
 
WSO2 Novo Modelo de Subscrições e Produtos 2017
WSO2 Novo Modelo de Subscrições e Produtos 2017WSO2 Novo Modelo de Subscrições e Produtos 2017
WSO2 Novo Modelo de Subscrições e Produtos 2017
 
WSO2 API Manager 2.0 - Overview
WSO2 API Manager 2.0 - Overview WSO2 API Manager 2.0 - Overview
WSO2 API Manager 2.0 - Overview
 
Workshop WSO2 BPS 3.5.x - BPMN
Workshop WSO2 BPS 3.5.x - BPMN Workshop WSO2 BPS 3.5.x - BPMN
Workshop WSO2 BPS 3.5.x - BPMN
 
WSO2 Telco MCX
WSO2 Telco MCXWSO2 Telco MCX
WSO2 Telco MCX
 
Workshop MSF4J - Getting Started with Microservices and Java
Workshop MSF4J - Getting Started with Microservices and JavaWorkshop MSF4J - Getting Started with Microservices and Java
Workshop MSF4J - Getting Started with Microservices and Java
 
WSO2 API Manager : Going beyond the just API Management
WSO2 API Manager : Going beyond the just API ManagementWSO2 API Manager : Going beyond the just API Management
WSO2 API Manager : Going beyond the just API Management
 
Workshop/Tutorial WSO2 Micro Services Server
Workshop/Tutorial WSO2 Micro Services ServerWorkshop/Tutorial WSO2 Micro Services Server
Workshop/Tutorial WSO2 Micro Services Server
 
WSO2 Micro Services Server - Basic Workshop Part 1
WSO2 Micro Services Server - Basic Workshop Part 1WSO2 Micro Services Server - Basic Workshop Part 1
WSO2 Micro Services Server - Basic Workshop Part 1
 
Conectando Turismo e Viagens - Plataforma WSO2
Conectando Turismo e Viagens - Plataforma WSO2Conectando Turismo e Viagens - Plataforma WSO2
Conectando Turismo e Viagens - Plataforma WSO2
 
WSO2 Application Server como Alternativa ao Tomcat
WSO2 Application Server como Alternativa ao TomcatWSO2 Application Server como Alternativa ao Tomcat
WSO2 Application Server como Alternativa ao Tomcat
 

FISL11 - REST com Java - WebServices Simples e Ágeis

  • 1.  
  • 2. REST em Java WebServices Ágeis, podeosos e fáceis Edgar Silva [email_address] @jedgarsilva
  • 4. Re presentational S tate T ransfer
  • 5.
  • 6. Web (somente Web)?
  • 7. Defina sua semantica de respostas (padrões XML, JSON, SEU)?
  • 8.
  • 13.
  • 15.
  • 16. QueryStrings: Famosos ? Serviço do Fisl, edição 11, sessão de número 918
  • 17.
  • 18. Não rodeie, por mais que você tente você não vai resolver tudo!
  • 20. Simples != Medíocre
  • 21.
  • 22. POST
  • 23. PUT
  • 25.
  • 26.
  • 27. Put – Escrita (insere/atualiza), idempontente
  • 28. Delete – Remover, idempontente
  • 29. Post – Não idempotente
  • 30.
  • 31.
  • 33.
  • 35. REST em Java @Path ("/fisl") public class Fisl { @GET @Path ("/sessoes") public String getSessoes() { //logica } http://servidor:8080/minhaapp/fisl/sessoes }
  • 36. REST em Java @GET @Path("/sessoes/{sessao}") public String getSessaoByID(@PathParam("sessao") String sessao) { // procura pela sessao } @PUT @Path("/sessoes/{sessao}/reservar") public void addBook( @PathParam ("sessao") String sessao, @QueryParam ("email") String email) { //grava no banco uma reserva } http://servidor:8080/minhaapp/fisl/sessoes/819 .. minhaapp/fisl/sessoes/819/reservar?email=edgar@redhat.com }
  • 37.
  • 38. @HeaderParam – H T T P header
  • 39. @CookieParam – H T T P c o o k ie
  • 43. Tá bom! Me mostre código! Hora do DEMO
  • 44.  
  • 47. Expressões regulares nas URIs @Path("/servico) public class MeuServico { @GET @Path("{var:.*}/algo") public String get() {...} GET /servico/algo GET /servico/antes/algo GET /servico/no/meio/de/algo
  • 48. Linkabilidade @Path(&quot;/&quot;) @Consumes({&quot;application/xml&quot;, &quot;application/json&quot;}) @Produces({&quot;application/xml&quot;, &quot;application/json&quot;}) public interface BookStore { @AddLinks @LinkResource(value = Book.class) @GET @Path(&quot;books&quot;) public Collection<Book> getBooks(); <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;yes&quot;?> <book xmlns:atom=&quot;http://www.w3.org/2005/Atom&quot; title=&quot;foo&quot; author=&quot;bar&quot;> <atom:link href=&quot;http://localhost:8081/books&quot; rel=&quot;list&quot;/> <atom:link href=&quot;http://localhost:8081/books&quot; rel=&quot;add&quot;/> <atom:link href=&quot;http://localhost:8081/book/foo&quot; rel=&quot;self&quot;/> <atom:link href=&quot;http://localhost:8081/book/foo&quot; rel=&quot;update&quot;/> <atom:link href=&quot;http://localhost:8081/book/foo&quot; rel=&quot;remove&quot;/> </book>
  • 49. Linkabilidade @Path(&quot;/&quot;) @Consumes({&quot;application/xml&quot;, &quot;application/json&quot;}) @Produces({&quot;application/xml&quot;, &quot;application/json&quot;}) public interface BookStore { @AddLinks @LinkResource(value = Book.class) @GET @Path(&quot;books&quot;) public Collection<Book> getBooks(); { &quot;book&quot;: { &quot;@title&quot;:&quot;foo&quot;, &quot;@author&quot;:&quot;bar&quot;, &quot;atom.link&quot;: [ {&quot;@href&quot;:&quot;http://localhost:8081/books&quot;,&quot;@rel&quot;:&quot;list&quot;}, {&quot;@href&quot;:&quot;http://localhost:8081/books&quot;,&quot;@rel&quot;:&quot;add&quot;}, {&quot;@href&quot;:&quot;http://localhost:8081/book/foo&quot;,&quot;@rel&quot;:&quot;self&quot;}, {&quot;@href&quot;:&quot;http://localhost:8081/book/foo&quot;,&quot;@rel&quot;:&quot;update&quot;}, {&quot;@href&quot;:&quot;http://localhost:8081/book/foo&quot;,&quot;@rel&quot;:&quot;remove&quot;} ] } }
  • 50. REST Assincrono / COMET import org.jboss.resteasy.annotations.Suspend; import org.jboss.resteasy.spi.AsynchronousResponse; @ Path ( &quot;/&quot; ) public class SimpleResource { @ GET @ Path ( &quot;basic&quot; ) @ Produces ( &quot;text/plain&quot; ) public void getBasic( final @Suspend (10000) AsynchronousResponse response) throws Exception { Thread t = new Thread() { @Override public void run() { try { Response jaxrs = Response .ok( &quot;basic&quot; ).type( MediaType .TEXT_PLAIN).build(); response.setResponse(jaxrs); } catch (Exception e) { e.printStackTrace(); } } }; t.start(); } }
  • 51. Api JavaScript @ Path ( &quot;orders&quot; ) public interface Orders { @ Path ( &quot;{id}&quot; ) @ GET public String getOrder( @ PathParam( &quot;id&quot; ) String id) { return &quot;Hello &quot; +id; } } // JavaScript var order = Orders.getOrder({id: 23}); // Uso do Objeto REST // Change the base URL used by the API: REST.apiURL = &quot;http://api.service.com&quot; ; // log everything in a div element REST.log = function (text ) { jQuery( &quot;#log-div&quot; ).append( text ); };
  • 53. REST é um ótimo modelo de integração, quanto empregado de forma simples e sem burocracia, melhor ainda. Você ainda pode precisar de SOAP,WSDLs, ou seja: WS Tradicionais, mas REST é uma ótima alternativa
  • 54.
  • 58. Bill Burke’s R E S T series no: DZone
  • 61. Edgar Silva [email_address] Twitter @jedgarsilva