SlideShare una empresa de Scribd logo
1 de 28
Descargar para leer sin conexión
RESTful	
  com	
  JSON	
  
Repensando	
  a	
  comunicação	
  para	
  reuso	
  
Quem	
  sou	
  eu?	
  

{	
  
	
  	
  	
  	
  “pessoa”	
  :	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  “nome”:	
  “Erko	
  Bridee	
  de	
  Almeida	
  Cabrera”,	
  
	
  	
  	
  	
  	
  	
  	
  	
  “idade”:	
  28,	
  
	
  	
  	
  	
  	
  	
  	
  	
  “nascimento”:	
  “02/07/1984”,	
  
	
  	
  	
  	
  	
  	
  	
  	
  “formacao”:	
  “Bacharel	
  em	
  Ciência	
  da	
  Computação	
  –	
  CESUFOZ”,	
  
	
  	
  	
  	
  	
  	
  	
  	
  “habilidades”:	
  [	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  “adobe	
  flex”,	
  	
  “angular.js”,	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  “java”,	
  	
  “javascript”,	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  “node.js”,	
  “RIA”,	
  “mais	
  algumas	
  outras…”	
  
	
  	
  	
  	
  	
  	
  	
  	
  ]	
  
	
  	
  	
  	
  }	
  
}	
  
Agenda	
  

▪  REST	
  …	
  “ful”	
  
▪  REST	
  e	
  seus	
  recursos	
  
▪  REST	
  e	
  suas	
  operações	
  
▪  REST	
  não	
  é	
  RPC,	
  não	
  insista	
  
▪  JSON	
  
▪  JSON	
  …	
  por	
  que	
  não	
  XML?	
  
▪  Enfim	
  …	
  RESTful	
  com	
  JSON	
  
▪  Ganho	
  o	
  que	
  com	
  isso?	
  
▪  Já	
  tenho	
  um	
  projeto,	
  tem	
  como	
  usar?	
  
▪  Código	
  por	
  favor…	
  
REST	
  …	
  “ful”	
  




Ei,	
  estou	
  falando	
  de	
  RESTful,	
  
não	
  de	
  “full	
  rest”	
  
REST	
  …	
  “ful”	
  

▪  REST	
  –	
  (Representational	
  State	
  Transfer)	
  Transferência	
  do	
  Estado	
  
   Representacional	
  
  –  Um	
  conceito	
  importante	
  em	
  REST	
  é	
  a	
  existência	
  de	
  recursos	
  	
  
      ▪  Sobre	
  estes,	
  temos	
  um	
  conjunto	
  de	
  operações	
  bem	
  definidas	
  
  –  Surgiu	
  em	
  2000,	
  como	
  uma	
  tese	
  de	
  PHD	
  
      ▪  Roy	
  Fielding	
  (um	
  dos	
  autores	
  da	
  especificação	
  do	
  protocolo	
  HTTP)	
  
E	
  o	
  “ful”?!	
  




                        Nome	
  dado	
  aos	
  
                        sistemas	
  que	
  seguem	
  os	
  
                        princípios	
  REST	
  
REST	
  e	
  seus	
  recursos	
  

▪  Recurso	
  =	
  Elemento	
  de	
  Informação	
  
▪  Cada	
  recurso	
  é	
  unicamente	
  direcionado	
  através	
  da	
  sua	
  URI	
  
   –  URI	
  =	
  URL	
  +	
  URN	
  
       ▪  URI	
  –	
  (Uniform	
  Resource	
  Identifier)	
  Identificador	
  Uniforme	
  de	
  Recursos	
  
       ▪  URL	
  –	
  (Uniform	
  Resource	
  Locator	
  )	
  Localização	
  de	
  Recursos	
  Uniforme	
  
       ▪  URN	
  –	
  (Uniform	
  Resource	
  Name)	
  Nome	
  de	
  Recursos	
  Uniforme	
  
           –  Boa	
  prática	
  indicada,	
  utilizar	
  o	
  nome	
  no	
  plural	
  


   –  Exemplo	
  de	
  URI	
  
                                            Protocolo	
                        URL	
        URN	
  

                                            http://	
                    app-­‐name/	
     pessoas	
  
REST	
  e	
  suas	
  operações	
  

▪  Utiliza	
  as	
  operações	
  do	
  HTTP	
  
   –  GET,	
  POST,	
  PUT,	
  DELETE	
  

▪  Normalmente	
  associado	
  as	
  operações	
  CRUD	
  

 URI	
                                 HTTP	
         CRUD	
                     METHOD	
  

 http://app-­‐name/pessoas	
            GET	
      READ	
  ALL	
         list()	
  :	
  List<Pessoa>	
  

 http://app-­‐name/pessoas/1	
          GET	
      READ	
  ONE	
           find(	
  id	
  )	
  :	
  Pessoa	
  

 http://app-­‐name/pessoas	
           POST	
       CREATE	
           add(	
  Pessoa	
  )	
  :	
  Pessoa	
  

 http://app-­‐name/pessoas/1	
          PUT	
       UPDATE	
         update(	
  Pessoa	
  )	
  :	
  Pessoa	
  

 http://app-­‐name/pessoas/1	
        DELETE	
      DELETE	
                   remove(	
  id	
  )	
  
REST	
  e	
  suas	
  operações	
  

          ▪  Tenha	
  em	
  mente	
  
            –  Implementar	
  no	
  mínimo	
  as	
  respectivas	
  operações	
  CRUD	
  
            	
  
            –  Caso	
  necessário	
  pode-­‐se	
  implementar	
  URIs	
  de	
  funcionalidades	
  a	
  mais	
  
            	
  
            –  Na	
  listagem	
  (READ	
  ALL)	
  pensar	
  em	
  paginação	
  


URI	
                                                       HTTP	
            CRUD	
                           METHOD	
  

http://app-­‐name/pessoas?limit=10&offset=0	
                 GET	
         READ	
  ALL	
        list(limit,	
  offset)	
  :	
  List<Pessoa>	
  

http://app-­‐name/pessoas/search	
                          POST	
        READ	
  SOME	
        search(	
  Pessoa	
  )	
  :	
  List<Pessoa>	
  
REST	
  e	
  suas	
  operações	
  

   ▪  E	
  mais	
  uma	
  “coisa”	
  
          –  É	
  indicado	
  como	
  boa	
  prática:	
  
             ▪  No	
  mínimo	
  incluir	
  na	
  URL:	
  /rest/	
  ou	
  /api/	
  
             ▪  Porém	
  é	
  mais	
  utilizado	
  ter	
  um	
  sub-­‐domínio	
  ex.:	
  http://api.app-­‐name/{recurso}	
  

URI	
                                               HTTP	
               CRUD	
                                METHOD	
  

http://app-­‐name/rest/pessoas	
                     GET	
            READ	
  ALL	
                    list()	
  :	
  List<Pessoa>	
  

http://app-­‐name/rest/pessoas/1	
                   GET	
           READ	
  ONE	
                       find(	
  id	
  )	
  :	
  Pessoa	
  

http://app-­‐name/rest/pessoas	
                    POST	
             CREATE	
                      add(	
  Pessoa	
  )	
  :	
  Pessoa	
  

http://app-­‐name/rest/pessoas/1	
                   PUT	
             UPDATE	
                    update(	
  Pessoa	
  )	
  :	
  Pessoa	
  

http://app-­‐name/rest/pessoas/1	
                DELETE	
             DELETE	
                              remove(	
  id	
  )	
  
REST	
  não	
  é	
  RPC,	
  não	
  insista	
  

  ▪  RPC	
  –	
  remote	
  procedure	
  call	
  
  ▪  Exemplo	
  de	
  HTTP	
  -­‐	
  RPC	
  

URI	
                                          HTTP	
        CRUD	
                   METHOD	
  

http://app-­‐name/pessoa/list	
                 GET	
     READ	
  ALL	
        list()	
  :	
  List<Pessoa>	
  

http://app-­‐name/pessoa/find	
                 POST	
     READ	
  ONE	
          find(id)	
  :	
  Pessoa	
  

http://app-­‐name/pessoa/add	
                 POST	
      CREATE	
           add(Pessoa)	
  :	
  Pessoa	
  

http://app-­‐name/pessoa/update	
              POST	
      UPDATE	
         update(Pessoa)	
  :	
  Pessoa	
  

http://app-­‐name/pessoa/remove	
              POST	
      DELETE	
              remove(Pessoa)	
  
JSON	
  




Calma,	
  não	
  é	
  desse	
  que	
  estou	
  
falando..	
  
JSON	
  

▪  JSON	
  –	
  JavaScript	
  Object	
  Notation	
  	
  
   –  Surgiu	
  em	
  2001	
  
      ▪  	
  JSON.org	
  em	
  2002	
  
          –  utilizado	
  pela	
  Yahoo!	
  a	
  partir	
  2005	
  
   –  Especificado	
  e	
  definido	
  por	
  	
  Douglas	
  Crockford,	
  descrita	
  na	
  RFC	
  4627	
  (07/2006)	
  
   –  Tipo	
  de	
  media	
  definido	
  para	
  o	
  JSON:	
  	
  	
  application/json	
  
   –  Extensão	
  de	
  um	
  arquivo	
  JSON:	
  	
  	
  .json	
  



▪  Formato	
  utilizado	
  para	
  serialização	
  e	
  transmissão	
  de	
  informações	
  
   pela	
  rede	
  
   –  Devido	
  ao	
  seu	
  formato,	
  ele	
  trafega	
  menos	
  dados	
  pela	
  rede	
  
   –  Facilidade	
  para	
  leitura	
  da	
  informação	
  
JSON	
  

▪  Os	
  tipos	
  de	
  dados	
  
   –  String	
  :	
  unicode	
  e	
  definida	
  entre	
  “”	
  
   –  Object	
  :	
  Definido	
  entre	
  {	
  “chave1”:	
  “valor”,	
  “chave2”:	
  2,	
  …	
  	
  }	
  
        ▪  Boa	
  prática:	
  procure	
  definir	
  as	
  chaves	
  (atributos)	
  em	
  CamelCase	
  
   –    Number	
  :	
  segue	
  a	
  mesma	
  convenção	
  do	
  Number	
  no	
  JavaScript	
  
   –    Boolean	
  :	
  true	
  ou	
  false	
  
   –    null	
  :	
  	
  vazio	
  
   –    Array	
  :	
  definido	
  entre	
  [],	
  podendo	
  conter	
  qualquer	
  tipo	
  válido,	
  separado	
  por	
  ,	
  
JSON	
  

▪  E	
  tipo	
  Date?	
  
   –  O	
  JSON	
  não	
  possui	
  uma	
  definição	
  para	
  este	
  tipo	
  
   	
  
   –  Existem	
  2	
  alternativas	
  para	
  a	
  serialização,	
  porém	
  a	
  definição	
  em	
  geral	
  é	
  manual	
  

       ▪  Utilizar	
  o	
  tipo	
  Number	
  e	
  trafegar	
  em	
  milisegundos	
  

       ▪  Utilizar	
  o	
  tipo	
  String	
  com	
  a	
  data	
  (c/s	
  hora)	
  formatada	
  	
  
           –  Ex.:	
  “dd/MM/yyyy	
  hh:nn:ss“	
  -­‐	
  “01/02/2013	
  01:02:03”	
  
Isso	
  é	
  JSON,	
  simples	
  não?	
  

{	
  
	
  	
  	
  	
  “pessoa”	
  :	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  “nome”:	
  “Erko	
  Bridee	
  de	
  Almeida	
  Cabrera”,	
  
	
  	
  	
  	
  	
  	
  	
  	
  “idade”:	
  28,	
  
	
  	
  	
  	
  	
  	
  	
  	
  “nascimento”:	
  “02/07/1984”,	
  
	
  	
  	
  	
  	
  	
  	
  	
  “formacao”:	
  “Bacharel	
  em	
  Ciência	
  da	
  Computação	
  –	
  CESUFOZ”,	
  
	
  	
  	
  	
  	
  	
  	
  	
  “habilidades”:	
  [	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  “adobe	
  flex”,	
  	
  “angular.js”,	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  “java”,	
  	
  “javascript”,	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  “node.js”,	
  “RIA”,	
  “mais	
  algumas	
  outras…”	
  
	
  	
  	
  	
  	
  	
  	
  	
  ]	
  
	
  	
  	
  	
  }	
  
}	
  
JSON	
  …	
  por	
  que	
  não	
  XML?	
  

<pessoa>	
  
	
  	
  	
  	
  <nome>Erko	
  Bridee	
  de	
  Almeida	
  Cabrera</nome>	
  
	
  	
  	
  	
  <idade>28</idade>	
  
	
  	
  	
  	
  <nascimento>02/07/1984</nascimento>	
  
	
  	
  	
  	
  <formacao>Bacharel	
  em	
  Ciência	
  da	
  Computação	
  –	
  CESUFOZ</formacao>	
  
	
  	
  	
  	
  <habilidades>	
  
	
  	
  	
  	
  	
  	
  	
  	
  <habilidade>adobe	
  flex</habilidade>	
  <habilidade>angular.js</habilidade>	
  
	
  	
  	
  	
  	
  	
  	
  	
  <habilidade>java</habilidade>	
  <habilidade>javascript</habilidade>	
  
	
  	
  	
  	
  	
  	
  	
  	
  <habilidade>node.js</habilidade>	
  	
  <habilidade>RIA</habilidade>	
  
	
  	
  	
  	
  	
  	
  	
  	
  <habilidade>mais	
  algumas	
  outras...</habilidade>	
  
	
  	
  	
  	
  </habilidades>	
  
</pessoa>	
  
JSON	
  …	
  por	
  que	
  não	
  XML?	
  

▪  Nada	
  contra	
  quem	
  goste	
  de	
  XML…	
  
▪  Legibilidade	
  


▪  Quantidade	
  de	
  dados	
  trafegado	
  
   –  Mesmo	
  utilizando	
  compactação	
  GZip	
  no	
  servidor,	
  a	
  quantidade	
  de	
  dados	
  
      trafegado	
  é	
  superior	
  ao	
  JSON	
  com	
  Gzip	
  



▪  XML	
  está	
  ficando	
  no	
  passado	
  (realidade	
  na	
  internet)	
  
Enfim	
  …	
  RESTful	
  com	
  JSON	
  

▪  Nada	
  mais	
  é	
  do	
  que	
  uma	
  aplicação	
  que	
  implementa	
  o	
  REST	
  e	
  utiliza	
  o	
  
   JSON	
  para	
  comunicação	
  entre	
  o	
  cliente	
  (interface)	
  e	
  o	
  servidor	
  


                                                     Rede	
  

                                                                          HTML	
  +	
  JavaScript	
  +	
  CSS	
  
                                       GET	
  /	
  DELETE	
  
                                       POST	
  /	
  PUT	
  (JSON)	
  


                                                                        JSON	
  
                     Servidor	
                                                      Cliente	
  
                      app-­‐name	
                                                   app-­‐name	
  
Ganho	
  o	
  que	
  com	
  isso?	
  

▪  O	
  tão	
  falado	
  reúso	
  
▪  Meio	
  caminho	
  andado	
  para	
  uma	
  API	
  /	
  Data	
  Service	
  
▪  Muitas	
  tecnologias	
  /	
  linguagem	
  disponibilizam	
  suporte	
  nativo	
  
   –  Comunicação	
  HTTP	
  REST	
  e	
  Serialização/Deserialização	
  JSON	
  

▪  Uso	
  do	
  cache	
  e	
  demais	
  recursos	
  do	
  protoco	
  HTTP	
  
Ganho	
  o	
  que	
  com	
  isso?	
  

                                 HTML	
  +	
  JavaScript	
  +	
  CSS	
  
     Rede	
  


                                                               Cliente	
  
                                                               app-­‐name	
  


                                                            JSON	
  
                                                                                Servidor	
  
                                                                                app-­‐name-­‐2	
  



            Servidor	
  
                app-­‐name	
  


                                                                                Servidor	
  
                                                                                app-­‐name-­‐3	
  
Já	
  tenho	
  um	
  projeto,	
  tem	
  como	
  usar?	
  

▪  Sorria,	
  tem	
  sim…	
  use	
  facede…	
  	
  facede?!	
  
Facede?!	
  




               Face	
  de?	
  Cara	
  de	
  quem?	
  
               	
  
               Não	
  é	
  isso,	
  mas	
  é	
  
               quase…	
  
               	
  
               É	
  Facade…	
  
               	
  
Já	
  tenho	
  um	
  projeto,	
  tem	
  como	
  usar?	
  

▪  Já	
  ouviu	
  falar	
  em	
  Facade?	
  
	
  
       –  Crie	
  uma	
  camada	
  (sendo	
  abstrato:	
  Facade	
  é	
  uma	
  camada)	
  
          ▪  Implemente	
  o	
  REST	
  
          ▪  Use	
  o	
  JSON	
  
          ▪  Cada	
  recurso,	
  uma	
  entidade,	
  uma	
  URI	
  
Já	
  tenho	
  um	
  projeto,	
  tem	
  como	
  usar?	
  

                        HTML	
  (5?)	
  +	
  JavaScript	
  +	
  CSS	
  
    Rede	
  


                                                         Cliente	
  
                                                          app-­‐name-­‐2	
  

                                                                               Servidor	
  
                                                                               app-­‐name-­‐3	
  


                                                    JSON	
  
                                  REST	
  Facade	
  


                                                app-­‐name	
  
                                                                                 Servidor	
  
                                                                                 app-­‐name-­‐4	
  
                                               Servidor	
  
Já	
  tenho	
  um	
  projeto,	
  tem	
  como	
  usar?	
  

▪  Muito	
  Importante:	
  
   –  Favor	
  não	
  utilizar	
  a	
  metodologia	
  XGH,	
  por	
  mais	
  ágil	
  que	
  ela	
  seja.	
  
       ▪  XGH	
  –	
  eXtreme	
  Go	
  Horse	
  


▪  Lembre-­‐se	
  :	
  	
  
   –  Uma	
  análise	
  é	
  recomendada	
  antes	
  de	
  colocar	
  a	
  mão	
  no	
  código.	
  
   –  Tenha	
  em	
  mente	
  o	
  que	
  foi	
  falado	
  anteriormente.	
  
Código	
  por	
  favor…	
  

▪  RESTful	
  com	
  JSON	
  
       –  https://github.com/erkobridee	
  
         ▪  angularjs-­‐github-­‐info	
  
         ▪  restful-­‐bookmarsk-­‐…	
  (springrest,	
  jerseyspring,	
  scala,	
  php	
  e	
  node.js)	
  

	
  
▪  Essa	
  é	
  a	
  hora	
  de	
  você	
  tentar	
  a	
  sorte	
  e	
  fazer	
  as	
  perguntas	
  hehe	
  
Acabou!	
  Por	
  enquanto…	
  




                           Obrigado.	
  
                    Twitter:	
  @ErkoBridee	
  
                 Site:	
  http://erkobridee.com	
  

Más contenido relacionado

La actualidad más candente

Criando Webservices RESTFul com CakePHP
Criando Webservices RESTFul com CakePHPCriando Webservices RESTFul com CakePHP
Criando Webservices RESTFul com CakePHPRenan Gonçalves
 
Criando e consumindo Web Services (REST) com o CakePHP
Criando e consumindo Web Services (REST) com o CakePHPCriando e consumindo Web Services (REST) com o CakePHP
Criando e consumindo Web Services (REST) com o CakePHP2km interativa!
 
De Web Services RESTful a Aplicações Mashup
De Web Services RESTful a Aplicações MashupDe Web Services RESTful a Aplicações Mashup
De Web Services RESTful a Aplicações MashupWagner Roberto dos Santos
 
Como um verdadeiro sistema REST funciona: arquitetura e performance na Abril
Como um verdadeiro sistema REST funciona: arquitetura e performance na AbrilComo um verdadeiro sistema REST funciona: arquitetura e performance na Abril
Como um verdadeiro sistema REST funciona: arquitetura e performance na AbrilLuis Cipriani
 
Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]
Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]
Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]Carl Edwin
 
Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0jesuinoPower
 
Como um grande sistema REST funciona - arquitetura e desempenho
Como um grande sistema REST funciona - arquitetura e desempenhoComo um grande sistema REST funciona - arquitetura e desempenho
Como um grande sistema REST funciona - arquitetura e desempenhoDavid Robert Camargo de Campos
 
Uma visão geral do OpenLDAP e Active Directory
Uma visão geral do OpenLDAP e Active DirectoryUma visão geral do OpenLDAP e Active Directory
Uma visão geral do OpenLDAP e Active Directoryelliando dias
 
Web 2.0 e RIA com PHP
Web 2.0 e RIA com PHPWeb 2.0 e RIA com PHP
Web 2.0 e RIA com PHPAdler Medrado
 
Minicurso de PHP Com Ajax
Minicurso de PHP Com AjaxMinicurso de PHP Com Ajax
Minicurso de PHP Com AjaxAdler Medrado
 
Sistemas Distribuídos - Big Web Services
Sistemas Distribuídos - Big Web ServicesSistemas Distribuídos - Big Web Services
Sistemas Distribuídos - Big Web ServicesKeyo Galvao
 
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...Tchelinux
 
Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utiliz...
Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utiliz...Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utiliz...
Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utiliz...Luis Cipriani
 
Webservices e Xml
Webservices e XmlWebservices e Xml
Webservices e Xmlsys10
 
Introdução a Web Services
Introdução a Web ServicesIntrodução a Web Services
Introdução a Web ServicesFabio Leal
 

La actualidad más candente (20)

Criando Webservices RESTFul com CakePHP
Criando Webservices RESTFul com CakePHPCriando Webservices RESTFul com CakePHP
Criando Webservices RESTFul com CakePHP
 
Criando e consumindo Web Services (REST) com o CakePHP
Criando e consumindo Web Services (REST) com o CakePHPCriando e consumindo Web Services (REST) com o CakePHP
Criando e consumindo Web Services (REST) com o CakePHP
 
Web Services Rest
Web Services RestWeb Services Rest
Web Services Rest
 
De Web Services RESTful a Aplicações Mashup
De Web Services RESTful a Aplicações MashupDe Web Services RESTful a Aplicações Mashup
De Web Services RESTful a Aplicações Mashup
 
Como um verdadeiro sistema REST funciona: arquitetura e performance na Abril
Como um verdadeiro sistema REST funciona: arquitetura e performance na AbrilComo um verdadeiro sistema REST funciona: arquitetura e performance na Abril
Como um verdadeiro sistema REST funciona: arquitetura e performance na Abril
 
Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]
Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]
Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]
 
Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0
 
Como um grande sistema REST funciona - arquitetura e desempenho
Como um grande sistema REST funciona - arquitetura e desempenhoComo um grande sistema REST funciona - arquitetura e desempenho
Como um grande sistema REST funciona - arquitetura e desempenho
 
Rest
RestRest
Rest
 
Uma visão geral do OpenLDAP e Active Directory
Uma visão geral do OpenLDAP e Active DirectoryUma visão geral do OpenLDAP e Active Directory
Uma visão geral do OpenLDAP e Active Directory
 
Web 2.0 e RIA com PHP
Web 2.0 e RIA com PHPWeb 2.0 e RIA com PHP
Web 2.0 e RIA com PHP
 
Minicurso de PHP Com Ajax
Minicurso de PHP Com AjaxMinicurso de PHP Com Ajax
Minicurso de PHP Com Ajax
 
Palestra Sobre REST
Palestra Sobre RESTPalestra Sobre REST
Palestra Sobre REST
 
LDAP
LDAPLDAP
LDAP
 
Sistemas Distribuídos - Big Web Services
Sistemas Distribuídos - Big Web ServicesSistemas Distribuídos - Big Web Services
Sistemas Distribuídos - Big Web Services
 
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
 
Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utiliz...
Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utiliz...Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utiliz...
Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utiliz...
 
Webservices e Xml
Webservices e XmlWebservices e Xml
Webservices e Xml
 
Web service
Web serviceWeb service
Web service
 
Introdução a Web Services
Introdução a Web ServicesIntrodução a Web Services
Introdução a Web Services
 

Destacado

Testando aplicações DataSnap
Testando aplicações DataSnapTestando aplicações DataSnap
Testando aplicações DataSnapAndreano Lanusse
 
Datasnap com FireDAC - Embarcadero Conference 2015
Datasnap com FireDAC - Embarcadero Conference 2015Datasnap com FireDAC - Embarcadero Conference 2015
Datasnap com FireDAC - Embarcadero Conference 2015Kelver Merlotti
 
Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...
Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...
Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...Kelver Merlotti
 
Nova Infraestrutura JSON: System.JSON na prática
Nova Infraestrutura JSON: System.JSON na prática Nova Infraestrutura JSON: System.JSON na prática
Nova Infraestrutura JSON: System.JSON na prática Mario Guedes
 
Minicurso Javascript
Minicurso JavascriptMinicurso Javascript
Minicurso JavascriptWilker Iceri
 
Minicurso JSON & Ajax
Minicurso JSON & AjaxMinicurso JSON & Ajax
Minicurso JSON & AjaxWilker Iceri
 
Introdução FireDAC Acesso multi-banco para Delphi e C++ Builder
Introdução FireDACAcesso multi-banco para Delphi e C++ BuilderIntrodução FireDACAcesso multi-banco para Delphi e C++ Builder
Introdução FireDAC Acesso multi-banco para Delphi e C++ BuilderDiego Rosa
 
Modularização via BPL - Abordagem Prática para DataSnap & Front-end
Modularização via BPL - Abordagem Prática para DataSnap & Front-endModularização via BPL - Abordagem Prática para DataSnap & Front-end
Modularização via BPL - Abordagem Prática para DataSnap & Front-endMario Guedes
 
Dados e Serviços Remotos via DataSnap
Dados e Serviços Remotos via DataSnapDados e Serviços Remotos via DataSnap
Dados e Serviços Remotos via DataSnapLanderson Gomes
 
Conselhos bíblicos de como lidar com um filho rebelde
Conselhos bíblicos de como lidar com um filho rebeldeConselhos bíblicos de como lidar com um filho rebelde
Conselhos bíblicos de como lidar com um filho rebeldeSimoneHelenDrumond
 
Conhecendo o Novo REST Framework
Conhecendo o Novo REST FrameworkConhecendo o Novo REST Framework
Conhecendo o Novo REST FrameworkMario Guedes
 
Python + Delphi: Um relacionamento que está dando certo
Python + Delphi: Um relacionamento que está dando certoPython + Delphi: Um relacionamento que está dando certo
Python + Delphi: Um relacionamento que está dando certoFernando Macedo
 
Delphi Conference 2011 - Desmistificando as Expressões Regulares
Delphi Conference 2011 - Desmistificando as Expressões RegularesDelphi Conference 2011 - Desmistificando as Expressões Regulares
Delphi Conference 2011 - Desmistificando as Expressões RegularesMario Guedes
 
Don gossett há poder em suas palavras
Don gossett   há poder em suas palavrasDon gossett   há poder em suas palavras
Don gossett há poder em suas palavrasantonio ferreira
 
Comunidade Slideshare
Comunidade SlideshareComunidade Slideshare
Comunidade Slideshareclaudiavo
 
kathryn-kuhlman-nada-e-impossivel-para-Deus
  kathryn-kuhlman-nada-e-impossivel-para-Deus   kathryn-kuhlman-nada-e-impossivel-para-Deus
kathryn-kuhlman-nada-e-impossivel-para-Deus antonio ferreira
 

Destacado (20)

Testando aplicações DataSnap
Testando aplicações DataSnapTestando aplicações DataSnap
Testando aplicações DataSnap
 
Datasnap com FireDAC - Embarcadero Conference 2015
Datasnap com FireDAC - Embarcadero Conference 2015Datasnap com FireDAC - Embarcadero Conference 2015
Datasnap com FireDAC - Embarcadero Conference 2015
 
Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...
Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...
Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...
 
Nova Infraestrutura JSON: System.JSON na prática
Nova Infraestrutura JSON: System.JSON na prática Nova Infraestrutura JSON: System.JSON na prática
Nova Infraestrutura JSON: System.JSON na prática
 
Minicurso Javascript
Minicurso JavascriptMinicurso Javascript
Minicurso Javascript
 
Minicurso JSON & Ajax
Minicurso JSON & AjaxMinicurso JSON & Ajax
Minicurso JSON & Ajax
 
Introdução FireDAC Acesso multi-banco para Delphi e C++ Builder
Introdução FireDACAcesso multi-banco para Delphi e C++ BuilderIntrodução FireDACAcesso multi-banco para Delphi e C++ Builder
Introdução FireDAC Acesso multi-banco para Delphi e C++ Builder
 
Exploring FireDAC
Exploring FireDACExploring FireDAC
Exploring FireDAC
 
Modularização via BPL - Abordagem Prática para DataSnap & Front-end
Modularização via BPL - Abordagem Prática para DataSnap & Front-endModularização via BPL - Abordagem Prática para DataSnap & Front-end
Modularização via BPL - Abordagem Prática para DataSnap & Front-end
 
REST Servers in Delphi XE Using DataSnap
REST Servers in Delphi XE Using DataSnapREST Servers in Delphi XE Using DataSnap
REST Servers in Delphi XE Using DataSnap
 
Prego e tabua
Prego e tabuaPrego e tabua
Prego e tabua
 
Downloads aula_09_1814
 Downloads aula_09_1814 Downloads aula_09_1814
Downloads aula_09_1814
 
Dados e Serviços Remotos via DataSnap
Dados e Serviços Remotos via DataSnapDados e Serviços Remotos via DataSnap
Dados e Serviços Remotos via DataSnap
 
Conselhos bíblicos de como lidar com um filho rebelde
Conselhos bíblicos de como lidar com um filho rebeldeConselhos bíblicos de como lidar com um filho rebelde
Conselhos bíblicos de como lidar com um filho rebelde
 
Conhecendo o Novo REST Framework
Conhecendo o Novo REST FrameworkConhecendo o Novo REST Framework
Conhecendo o Novo REST Framework
 
Python + Delphi: Um relacionamento que está dando certo
Python + Delphi: Um relacionamento que está dando certoPython + Delphi: Um relacionamento que está dando certo
Python + Delphi: Um relacionamento que está dando certo
 
Delphi Conference 2011 - Desmistificando as Expressões Regulares
Delphi Conference 2011 - Desmistificando as Expressões RegularesDelphi Conference 2011 - Desmistificando as Expressões Regulares
Delphi Conference 2011 - Desmistificando as Expressões Regulares
 
Don gossett há poder em suas palavras
Don gossett   há poder em suas palavrasDon gossett   há poder em suas palavras
Don gossett há poder em suas palavras
 
Comunidade Slideshare
Comunidade SlideshareComunidade Slideshare
Comunidade Slideshare
 
kathryn-kuhlman-nada-e-impossivel-para-Deus
  kathryn-kuhlman-nada-e-impossivel-para-Deus   kathryn-kuhlman-nada-e-impossivel-para-Deus
kathryn-kuhlman-nada-e-impossivel-para-Deus
 

Similar a RESTful JSON comunicação

Construindo APIs RESTful com Spring
Construindo APIs RESTful com SpringConstruindo APIs RESTful com Spring
Construindo APIs RESTful com SpringMateus Malaquias
 
REST-fuuuu - Boas práticas RESTful [PHPeste 2017]
REST-fuuuu - Boas práticas RESTful [PHPeste 2017]REST-fuuuu - Boas práticas RESTful [PHPeste 2017]
REST-fuuuu - Boas práticas RESTful [PHPeste 2017]Igor Santos
 
Novidades do elasticsearch 2.0 e como usá-lo com PHP
Novidades do elasticsearch 2.0 e como usá-lo com PHPNovidades do elasticsearch 2.0 e como usá-lo com PHP
Novidades do elasticsearch 2.0 e como usá-lo com PHPLuiz Henrique Zambom Santana
 
Monitoramento de Aplicações Web Modernas com Zabbix
Monitoramento de Aplicações Web Modernas com ZabbixMonitoramento de Aplicações Web Modernas com Zabbix
Monitoramento de Aplicações Web Modernas com ZabbixAndré Déo
 
Rest Java One
Rest Java OneRest Java One
Rest Java OneDextra
 
Rest fuuuu front-end
Rest fuuuu front-endRest fuuuu front-end
Rest fuuuu front-endIgor Santos
 
Palestra Elasticsearch - The Developers Conference - Floripa - 2017
Palestra Elasticsearch - The Developers Conference - Floripa - 2017Palestra Elasticsearch - The Developers Conference - Floripa - 2017
Palestra Elasticsearch - The Developers Conference - Floripa - 2017Thiago Barradas
 
HTTP, JSON, REST e AJAX com AngularJS
HTTP, JSON, REST e AJAX com AngularJSHTTP, JSON, REST e AJAX com AngularJS
HTTP, JSON, REST e AJAX com AngularJSRodrigo Branas
 
uma história sobre testes de API
uma história sobre testes de APIuma história sobre testes de API
uma história sobre testes de APISamuel Lourenço
 
Você não deveria escrever uma API para isso
Você não deveria escrever uma API para issoVocê não deveria escrever uma API para isso
Você não deveria escrever uma API para issoJunior Conte
 
Fluentd/LogStash + elastic search + kibana
Fluentd/LogStash + elastic search + kibanaFluentd/LogStash + elastic search + kibana
Fluentd/LogStash + elastic search + kibanaCésar Araújo
 
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1Thyago Maia
 
Palestra DataFlow - II São Paulo Perl Workshop
Palestra DataFlow - II São Paulo Perl WorkshopPalestra DataFlow - II São Paulo Perl Workshop
Palestra DataFlow - II São Paulo Perl WorkshopAlexei Znamensky
 
JavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data REST
JavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data RESTJavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data REST
JavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data RESTRodrigo Cândido da Silva
 
Integrando sua App ao Mundo via REST/JSON
Integrando sua App ao Mundo via REST/JSONIntegrando sua App ao Mundo via REST/JSON
Integrando sua App ao Mundo via REST/JSONMario Guedes
 
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)Helder da Rocha
 

Similar a RESTful JSON comunicação (20)

Construindo APIs RESTful com Spring
Construindo APIs RESTful com SpringConstruindo APIs RESTful com Spring
Construindo APIs RESTful com Spring
 
REST-fuuuu - Boas práticas RESTful [PHPeste 2017]
REST-fuuuu - Boas práticas RESTful [PHPeste 2017]REST-fuuuu - Boas práticas RESTful [PHPeste 2017]
REST-fuuuu - Boas práticas RESTful [PHPeste 2017]
 
Novidades do elasticsearch 2.0 e como usá-lo com PHP
Novidades do elasticsearch 2.0 e como usá-lo com PHPNovidades do elasticsearch 2.0 e como usá-lo com PHP
Novidades do elasticsearch 2.0 e como usá-lo com PHP
 
Monitoramento de Aplicações Web Modernas com Zabbix
Monitoramento de Aplicações Web Modernas com ZabbixMonitoramento de Aplicações Web Modernas com Zabbix
Monitoramento de Aplicações Web Modernas com Zabbix
 
REST-fuuuu
REST-fuuuuREST-fuuuu
REST-fuuuu
 
Rest Java One
Rest Java OneRest Java One
Rest Java One
 
Rest fuuuu front-end
Rest fuuuu front-endRest fuuuu front-end
Rest fuuuu front-end
 
Palestra Elasticsearch - The Developers Conference - Floripa - 2017
Palestra Elasticsearch - The Developers Conference - Floripa - 2017Palestra Elasticsearch - The Developers Conference - Floripa - 2017
Palestra Elasticsearch - The Developers Conference - Floripa - 2017
 
HTTP, JSON, REST e AJAX com AngularJS
HTTP, JSON, REST e AJAX com AngularJSHTTP, JSON, REST e AJAX com AngularJS
HTTP, JSON, REST e AJAX com AngularJS
 
Introdução APIs RESTful
Introdução APIs RESTfulIntrodução APIs RESTful
Introdução APIs RESTful
 
uma história sobre testes de API
uma história sobre testes de APIuma história sobre testes de API
uma história sobre testes de API
 
Mashups: Criando Valor na Web 2.0
Mashups: Criando Valor na Web 2.0Mashups: Criando Valor na Web 2.0
Mashups: Criando Valor na Web 2.0
 
Você não deveria escrever uma API para isso
Você não deveria escrever uma API para issoVocê não deveria escrever uma API para isso
Você não deveria escrever uma API para isso
 
Fluentd/LogStash + elastic search + kibana
Fluentd/LogStash + elastic search + kibanaFluentd/LogStash + elastic search + kibana
Fluentd/LogStash + elastic search + kibana
 
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
 
Palestra DataFlow - II São Paulo Perl Workshop
Palestra DataFlow - II São Paulo Perl WorkshopPalestra DataFlow - II São Paulo Perl Workshop
Palestra DataFlow - II São Paulo Perl Workshop
 
JavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data REST
JavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data RESTJavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data REST
JavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data REST
 
Integrando sua App ao Mundo via REST/JSON
Integrando sua App ao Mundo via REST/JSONIntegrando sua App ao Mundo via REST/JSON
Integrando sua App ao Mundo via REST/JSON
 
Mashups: Criando Valor na Web 2.0 (BandTec)
Mashups: Criando Valor na Web 2.0 (BandTec)Mashups: Criando Valor na Web 2.0 (BandTec)
Mashups: Criando Valor na Web 2.0 (BandTec)
 
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
 

Más de Erko Bridee de Almeida Cabrera (14)

Slides da palestra no Flex mania 2011
Slides da palestra no Flex mania 2011Slides da palestra no Flex mania 2011
Slides da palestra no Flex mania 2011
 
FlexMania 2010 - Adobe Flex + Oracle WebLogic 10.x [Ambiente]
FlexMania 2010 - Adobe Flex + Oracle WebLogic 10.x [Ambiente]FlexMania 2010 - Adobe Flex + Oracle WebLogic 10.x [Ambiente]
FlexMania 2010 - Adobe Flex + Oracle WebLogic 10.x [Ambiente]
 
FlexMania 2010 - Adobe Flex + Oracle WebLogic 10.x [Slides]
FlexMania 2010 - Adobe Flex + Oracle WebLogic 10.x [Slides]FlexMania 2010 - Adobe Flex + Oracle WebLogic 10.x [Slides]
FlexMania 2010 - Adobe Flex + Oracle WebLogic 10.x [Slides]
 
Estatuto Social Oscip Guarany Atual 20 07 2009
Estatuto Social Oscip Guarany   Atual 20 07 2009Estatuto Social Oscip Guarany   Atual 20 07 2009
Estatuto Social Oscip Guarany Atual 20 07 2009
 
Confiar sempre
Confiar sempreConfiar sempre
Confiar sempre
 
O Importante
O ImportanteO Importante
O Importante
 
O Importante
O ImportanteO Importante
O Importante
 
O Importante
O ImportanteO Importante
O Importante
 
Cwbfx 1 Encontro
Cwbfx 1 EncontroCwbfx 1 Encontro
Cwbfx 1 Encontro
 
Atravessando O Rio
Atravessando O RioAtravessando O Rio
Atravessando O Rio
 
Quando
QuandoQuando
Quando
 
As Maos De Albrecht Durer
As Maos De Albrecht DurerAs Maos De Albrecht Durer
As Maos De Albrecht Durer
 
Nasa vs. Deus
Nasa vs. DeusNasa vs. Deus
Nasa vs. Deus
 
Palestra Web 2.0 & RIA
Palestra Web 2.0 & RIAPalestra Web 2.0 & RIA
Palestra Web 2.0 & RIA
 

RESTful JSON comunicação

  • 1. RESTful  com  JSON   Repensando  a  comunicação  para  reuso  
  • 2. Quem  sou  eu?   {          “pessoa”  :  {                  “nome”:  “Erko  Bridee  de  Almeida  Cabrera”,                  “idade”:  28,                  “nascimento”:  “02/07/1984”,                  “formacao”:  “Bacharel  em  Ciência  da  Computação  –  CESUFOZ”,                  “habilidades”:  [                          “adobe  flex”,    “angular.js”,                            “java”,    “javascript”,                            “node.js”,  “RIA”,  “mais  algumas  outras…”                  ]          }   }  
  • 3. Agenda   ▪  REST  …  “ful”   ▪  REST  e  seus  recursos   ▪  REST  e  suas  operações   ▪  REST  não  é  RPC,  não  insista   ▪  JSON   ▪  JSON  …  por  que  não  XML?   ▪  Enfim  …  RESTful  com  JSON   ▪  Ganho  o  que  com  isso?   ▪  Já  tenho  um  projeto,  tem  como  usar?   ▪  Código  por  favor…  
  • 4. REST  …  “ful”   Ei,  estou  falando  de  RESTful,   não  de  “full  rest”  
  • 5. REST  …  “ful”   ▪  REST  –  (Representational  State  Transfer)  Transferência  do  Estado   Representacional   –  Um  conceito  importante  em  REST  é  a  existência  de  recursos     ▪  Sobre  estes,  temos  um  conjunto  de  operações  bem  definidas   –  Surgiu  em  2000,  como  uma  tese  de  PHD   ▪  Roy  Fielding  (um  dos  autores  da  especificação  do  protocolo  HTTP)  
  • 6. E  o  “ful”?!   Nome  dado  aos   sistemas  que  seguem  os   princípios  REST  
  • 7. REST  e  seus  recursos   ▪  Recurso  =  Elemento  de  Informação   ▪  Cada  recurso  é  unicamente  direcionado  através  da  sua  URI   –  URI  =  URL  +  URN   ▪  URI  –  (Uniform  Resource  Identifier)  Identificador  Uniforme  de  Recursos   ▪  URL  –  (Uniform  Resource  Locator  )  Localização  de  Recursos  Uniforme   ▪  URN  –  (Uniform  Resource  Name)  Nome  de  Recursos  Uniforme   –  Boa  prática  indicada,  utilizar  o  nome  no  plural   –  Exemplo  de  URI   Protocolo   URL   URN   http://   app-­‐name/   pessoas  
  • 8. REST  e  suas  operações   ▪  Utiliza  as  operações  do  HTTP   –  GET,  POST,  PUT,  DELETE   ▪  Normalmente  associado  as  operações  CRUD   URI   HTTP   CRUD   METHOD   http://app-­‐name/pessoas   GET   READ  ALL   list()  :  List<Pessoa>   http://app-­‐name/pessoas/1   GET   READ  ONE   find(  id  )  :  Pessoa   http://app-­‐name/pessoas   POST   CREATE   add(  Pessoa  )  :  Pessoa   http://app-­‐name/pessoas/1   PUT   UPDATE   update(  Pessoa  )  :  Pessoa   http://app-­‐name/pessoas/1   DELETE   DELETE   remove(  id  )  
  • 9. REST  e  suas  operações   ▪  Tenha  em  mente   –  Implementar  no  mínimo  as  respectivas  operações  CRUD     –  Caso  necessário  pode-­‐se  implementar  URIs  de  funcionalidades  a  mais     –  Na  listagem  (READ  ALL)  pensar  em  paginação   URI   HTTP   CRUD   METHOD   http://app-­‐name/pessoas?limit=10&offset=0   GET   READ  ALL   list(limit,  offset)  :  List<Pessoa>   http://app-­‐name/pessoas/search   POST   READ  SOME   search(  Pessoa  )  :  List<Pessoa>  
  • 10. REST  e  suas  operações   ▪  E  mais  uma  “coisa”   –  É  indicado  como  boa  prática:   ▪  No  mínimo  incluir  na  URL:  /rest/  ou  /api/   ▪  Porém  é  mais  utilizado  ter  um  sub-­‐domínio  ex.:  http://api.app-­‐name/{recurso}   URI   HTTP   CRUD   METHOD   http://app-­‐name/rest/pessoas   GET   READ  ALL   list()  :  List<Pessoa>   http://app-­‐name/rest/pessoas/1   GET   READ  ONE   find(  id  )  :  Pessoa   http://app-­‐name/rest/pessoas   POST   CREATE   add(  Pessoa  )  :  Pessoa   http://app-­‐name/rest/pessoas/1   PUT   UPDATE   update(  Pessoa  )  :  Pessoa   http://app-­‐name/rest/pessoas/1   DELETE   DELETE   remove(  id  )  
  • 11. REST  não  é  RPC,  não  insista   ▪  RPC  –  remote  procedure  call   ▪  Exemplo  de  HTTP  -­‐  RPC   URI   HTTP   CRUD   METHOD   http://app-­‐name/pessoa/list   GET   READ  ALL   list()  :  List<Pessoa>   http://app-­‐name/pessoa/find   POST   READ  ONE   find(id)  :  Pessoa   http://app-­‐name/pessoa/add   POST   CREATE   add(Pessoa)  :  Pessoa   http://app-­‐name/pessoa/update   POST   UPDATE   update(Pessoa)  :  Pessoa   http://app-­‐name/pessoa/remove   POST   DELETE   remove(Pessoa)  
  • 12. JSON   Calma,  não  é  desse  que  estou   falando..  
  • 13. JSON   ▪  JSON  –  JavaScript  Object  Notation     –  Surgiu  em  2001   ▪   JSON.org  em  2002   –  utilizado  pela  Yahoo!  a  partir  2005   –  Especificado  e  definido  por    Douglas  Crockford,  descrita  na  RFC  4627  (07/2006)   –  Tipo  de  media  definido  para  o  JSON:      application/json   –  Extensão  de  um  arquivo  JSON:      .json   ▪  Formato  utilizado  para  serialização  e  transmissão  de  informações   pela  rede   –  Devido  ao  seu  formato,  ele  trafega  menos  dados  pela  rede   –  Facilidade  para  leitura  da  informação  
  • 14. JSON   ▪  Os  tipos  de  dados   –  String  :  unicode  e  definida  entre  “”   –  Object  :  Definido  entre  {  “chave1”:  “valor”,  “chave2”:  2,  …    }   ▪  Boa  prática:  procure  definir  as  chaves  (atributos)  em  CamelCase   –  Number  :  segue  a  mesma  convenção  do  Number  no  JavaScript   –  Boolean  :  true  ou  false   –  null  :    vazio   –  Array  :  definido  entre  [],  podendo  conter  qualquer  tipo  válido,  separado  por  ,  
  • 15. JSON   ▪  E  tipo  Date?   –  O  JSON  não  possui  uma  definição  para  este  tipo     –  Existem  2  alternativas  para  a  serialização,  porém  a  definição  em  geral  é  manual   ▪  Utilizar  o  tipo  Number  e  trafegar  em  milisegundos   ▪  Utilizar  o  tipo  String  com  a  data  (c/s  hora)  formatada     –  Ex.:  “dd/MM/yyyy  hh:nn:ss“  -­‐  “01/02/2013  01:02:03”  
  • 16. Isso  é  JSON,  simples  não?   {          “pessoa”  :  {                  “nome”:  “Erko  Bridee  de  Almeida  Cabrera”,                  “idade”:  28,                  “nascimento”:  “02/07/1984”,                  “formacao”:  “Bacharel  em  Ciência  da  Computação  –  CESUFOZ”,                  “habilidades”:  [                          “adobe  flex”,    “angular.js”,                            “java”,    “javascript”,                            “node.js”,  “RIA”,  “mais  algumas  outras…”                  ]          }   }  
  • 17. JSON  …  por  que  não  XML?   <pessoa>          <nome>Erko  Bridee  de  Almeida  Cabrera</nome>          <idade>28</idade>          <nascimento>02/07/1984</nascimento>          <formacao>Bacharel  em  Ciência  da  Computação  –  CESUFOZ</formacao>          <habilidades>                  <habilidade>adobe  flex</habilidade>  <habilidade>angular.js</habilidade>                  <habilidade>java</habilidade>  <habilidade>javascript</habilidade>                  <habilidade>node.js</habilidade>    <habilidade>RIA</habilidade>                  <habilidade>mais  algumas  outras...</habilidade>          </habilidades>   </pessoa>  
  • 18. JSON  …  por  que  não  XML?   ▪  Nada  contra  quem  goste  de  XML…   ▪  Legibilidade   ▪  Quantidade  de  dados  trafegado   –  Mesmo  utilizando  compactação  GZip  no  servidor,  a  quantidade  de  dados   trafegado  é  superior  ao  JSON  com  Gzip   ▪  XML  está  ficando  no  passado  (realidade  na  internet)  
  • 19. Enfim  …  RESTful  com  JSON   ▪  Nada  mais  é  do  que  uma  aplicação  que  implementa  o  REST  e  utiliza  o   JSON  para  comunicação  entre  o  cliente  (interface)  e  o  servidor   Rede   HTML  +  JavaScript  +  CSS   GET  /  DELETE   POST  /  PUT  (JSON)   JSON   Servidor   Cliente   app-­‐name   app-­‐name  
  • 20. Ganho  o  que  com  isso?   ▪  O  tão  falado  reúso   ▪  Meio  caminho  andado  para  uma  API  /  Data  Service   ▪  Muitas  tecnologias  /  linguagem  disponibilizam  suporte  nativo   –  Comunicação  HTTP  REST  e  Serialização/Deserialização  JSON   ▪  Uso  do  cache  e  demais  recursos  do  protoco  HTTP  
  • 21. Ganho  o  que  com  isso?   HTML  +  JavaScript  +  CSS   Rede   Cliente   app-­‐name   JSON   Servidor   app-­‐name-­‐2   Servidor   app-­‐name   Servidor   app-­‐name-­‐3  
  • 22. Já  tenho  um  projeto,  tem  como  usar?   ▪  Sorria,  tem  sim…  use  facede…    facede?!  
  • 23. Facede?!   Face  de?  Cara  de  quem?     Não  é  isso,  mas  é   quase…     É  Facade…    
  • 24. Já  tenho  um  projeto,  tem  como  usar?   ▪  Já  ouviu  falar  em  Facade?     –  Crie  uma  camada  (sendo  abstrato:  Facade  é  uma  camada)   ▪  Implemente  o  REST   ▪  Use  o  JSON   ▪  Cada  recurso,  uma  entidade,  uma  URI  
  • 25. Já  tenho  um  projeto,  tem  como  usar?   HTML  (5?)  +  JavaScript  +  CSS   Rede   Cliente   app-­‐name-­‐2   Servidor   app-­‐name-­‐3   JSON   REST  Facade   app-­‐name   Servidor   app-­‐name-­‐4   Servidor  
  • 26. Já  tenho  um  projeto,  tem  como  usar?   ▪  Muito  Importante:   –  Favor  não  utilizar  a  metodologia  XGH,  por  mais  ágil  que  ela  seja.   ▪  XGH  –  eXtreme  Go  Horse   ▪  Lembre-­‐se  :     –  Uma  análise  é  recomendada  antes  de  colocar  a  mão  no  código.   –  Tenha  em  mente  o  que  foi  falado  anteriormente.  
  • 27. Código  por  favor…   ▪  RESTful  com  JSON   –  https://github.com/erkobridee   ▪  angularjs-­‐github-­‐info   ▪  restful-­‐bookmarsk-­‐…  (springrest,  jerseyspring,  scala,  php  e  node.js)     ▪  Essa  é  a  hora  de  você  tentar  a  sorte  e  fazer  as  perguntas  hehe  
  • 28. Acabou!  Por  enquanto…   Obrigado.   Twitter:  @ErkoBridee   Site:  http://erkobridee.com