SlideShare una empresa de Scribd logo
1 de 38
Descargar para leer sin conexión
Web Services em PHP
SAPO CodeBits - 13 de Novembro de 2007
      Bruno Pedro <bpedro@computer.org>
SAPO CodeBits 2007




                      Conteúdo
 • Conceitos
 • Web Services
  • SOAP
  • REST
  • JSON
 • Exercícios
 • Resumo
Web Services em PHP      2
SAPO CodeBits 2007




                  Web Services




                                 Source:The Server Side
                             (http://tinyurl.com/38umxt)

Web Services em PHP    3
SAPO CodeBits 2007




O que são Web Services?

 • Interacções inter-operáveis
 • Invocações são feitas através da rede
 • Existem bastantes standards
 • Usados pela maioria dos serviços Web 2.0

Web Services em PHP   4
SAPO CodeBits 2007




                      WSDL

 • Web Services Description Language
 • Linguagem XML
 • Descreve um Web Service
  • operações disponíveis
  • localizações ou endpoints
Web Services em PHP    5
SAPO CodeBits 2007




                           WSDL
 • UML use-case
                                         WSDL


                            <obtém>




                           <consome>
               aplicação



                                       Web Service




Web Services em PHP             6
SAPO CodeBits 2007




                      WS-I
 • Web Services Interoperability Organization
 • Consórcio de várias empresas
 • Promove a inter-operabilidade de Web
      Services
 • Define perfis de utilização
   • Basic Profile (BP)
   • Security Profile (SP)
   • Simple SOAP Binding Profile (SSBP)
Web Services em PHP    7
SAPO CodeBits 2007




                      Requisitos

 • PHP 5.2.2
 • Suporte para SOAP
 • Extensão simplexml
 • Extensão DOM
 • Extensão JSON
Web Services em PHP       8
SAPO CodeBits 2007




                      SOAP




                                    Fonte: Prentice Hall
                           (http://tinyurl.com/33dcch)

Web Services em PHP    9
SAPO CodeBits 2007




                      SOAP

 • Simple Object Access Protocol
 • Normalmente é um pedido HTTP POST
 • A chamada é encapsulada XML
 • A resposta é um documento XML
 • PHP gere todo o processo
Web Services em PHP    10
SAPO CodeBits 2007




 Implementação: servidor

                                         namespace




                                         inicia o servidor
                                  assigna uma classe
                       gere invocações

Web Services em PHP   11
SAPO CodeBits 2007




 Implementação: cliente
                               namespace




                                  endpoint



       mostra resultado

Web Services em PHP       12
SAPO CodeBits 2007




                      Output
                                    namespace




                        resultado

Web Services em PHP     13
SAPO CodeBits 2007




                      Persistência
 • Problema: informação perde-se entre
      várias invocações do Web Service


 • Como resolver?


Web Services em PHP        14
SAPO CodeBits 2007




                SOAP: resumo

 • Suporte para SOAP 1.1, 1.2 e WSDL 1.1
 • Gere tipos de dados simples e complexos
 • Implementação muito simples
 • Output é demasiado “pesado”

Web Services em PHP   15
SAPO CodeBits 2007




                      REST
      «interface»
                                   /calculator/sum/
       Resource
                              GET - perform a calculation
     GET
                              PUT - not used
     PUT
                              POST - not used
     POST
                              DELETE - not used
     DELETE




   http://example.com/calculator/sum/?x=121&y=233




Web Services em PHP      16
SAPO CodeBits 2007




                      REST
 • Representational State Transfer
 • Normalmente utilizado através de um
      pedido HTTP GET
 • Invocação é feita através de parâmetros GET
 • Resposta é um documento XML
 • Criação da resposta com DOM
 • Interpretação da resposta com simplexml
Web Services em PHP     17
SAPO CodeBits 2007




 Implementação: servidor



                           gere a invocação




Web Services em PHP   18
SAPO CodeBits 2007




                      DOM
 • Document Object Model
 • Extensão de PHP
 • Instalada por omissão
 • Permite manuseamento de documentos
      XML usando a árvore DOM
 • Mais simples do que manipular blocos de
      texto
Web Services em PHP    19
SAPO CodeBits 2007




Implementação: servidor
                                   cria um
                                   documento XML
                                           adiciona
                                          elementos


                           devolve o resultado




Web Services em PHP   20
SAPO CodeBits 2007




                      simplexml
 • Extensão de PHP
 • Instalada por omissão
 • Permite converter um documento XML
      num objecto
 • Permite o manuseamento de documentos
      XML de uma forma muito fácil

Web Services em PHP       21
SAPO CodeBits 2007




 Implementação: cliente

                                       endpoint

                                    arguments



                                load XML document

           output result

Web Services em PHP        22
SAPO CodeBits 2007




                      Output



                             result




Web Services em PHP     23
SAPO CodeBits 2007




                  REST: resumo
• É necessário implementar toda a interacção
     cliente/servidor
• O schema do XML tem que ser conhecido
     pelo cliente para que consiga interpretar a
     resposta
• Não é possível gerir tipos complexos
 • resolução através de serialização
• A resposta é geralmente RSS
Web Services em PHP      24
SAPO CodeBits 2007




                      JSON




                                JSON Logo
                            Source: json.org




Web Services em PHP    25
SAPO CodeBits 2007




                      JSON
 • JavaScript Object Notation
 • Aproximação REST
 • Resposta não é XML
 • É invocado pelo browser
 • Resposta é gerada por json_encode()
 • Resposta é interpretada por JavaScript
Web Services em PHP    26
SAPO CodeBits 2007




Implementação: servidor

                           handle incoming call



                                        generate result


                                         output
                                         JSON string

Web Services em PHP   27
SAPO CodeBits 2007




 Implementação: cliente
                                           endpoint



                                                      parâmetros




                      mostra output


Web Services em PHP                   28
SAPO CodeBits 2007




                      Output



                             resultado




Web Services em PHP     29
SAPO CodeBits 2007




                      JSON
 • Filosofia REST
 • Gere tipos de dados simples e complexos
 • As chamadas podem ser efectuadas usando
      AJAX
 • Pode também ser utilizado server-side,
      servindo de transporte de informação

Web Services em PHP     30
SAPO CodeBits 2007




                      Exemplo

 • Consumir Web Service SAPO
  • implementar cliente SOAP
  • implementar cliente REST

Web Services em PHP      31
SAPO CodeBits 2007




               Serviços SAPO

 • http://services.sapo.pt/
 • Lista de serviços disponíveis
 • Documentação de cada serviço
 • Geração de código cliente

Web Services em PHP   32
SAPO CodeBits 2007




   Implementação SOAP




Web Services em PHP   33
SAPO CodeBits 2007




   Implementação SOAP




Web Services em PHP   34
SAPO CodeBits 2007




    Implementação REST




Web Services em PHP   35
SAPO CodeBits 2007




                      Resumo

 • WSDL, WS-I
 • SOAP
 • REST
 • JSON
 • Exemplos
Web Services em PHP     36
SAPO CodeBits 2007




                      Questões?




Web Services em PHP       37
SAPO CodeBits 2007




             Mais informação
 • My blog: http://unfoldingtheweb.com/

 • PHP Manual: http://www.php.net/
 • SOAP: http://www.w3.org/TR/soap/
 • REST: http://tinyurl.com/akhc7
 • JSON: http://www.json.org/
Web Services em PHP   38

Más contenido relacionado

La actualidad más candente

Apache traffic server uma alternativa ao squid para web caches - fisl 14
Apache traffic server  uma alternativa ao squid para web caches - fisl 14Apache traffic server  uma alternativa ao squid para web caches - fisl 14
Apache traffic server uma alternativa ao squid para web caches - fisl 14Heitor Ganzeli
 
Boas práticas no desenvolvimento de uma RESTful API
Boas práticas no desenvolvimento de uma RESTful APIBoas práticas no desenvolvimento de uma RESTful API
Boas práticas no desenvolvimento de uma RESTful APIFernando Camargo
 
Introdução a Web Services
Introdução a Web ServicesIntrodução a Web Services
Introdução a Web ServicesFabio Leal
 
REST Web Services com Java
REST Web Services com JavaREST Web Services com Java
REST Web Services com JavaJugVale
 
Redes servidor web
Redes servidor webRedes servidor web
Redes servidor webMauro Duarte
 

La actualidad más candente (6)

Apache traffic server uma alternativa ao squid para web caches - fisl 14
Apache traffic server  uma alternativa ao squid para web caches - fisl 14Apache traffic server  uma alternativa ao squid para web caches - fisl 14
Apache traffic server uma alternativa ao squid para web caches - fisl 14
 
Slides nginx
Slides nginxSlides nginx
Slides nginx
 
Boas práticas no desenvolvimento de uma RESTful API
Boas práticas no desenvolvimento de uma RESTful APIBoas práticas no desenvolvimento de uma RESTful API
Boas práticas no desenvolvimento de uma RESTful API
 
Introdução a Web Services
Introdução a Web ServicesIntrodução a Web Services
Introdução a Web Services
 
REST Web Services com Java
REST Web Services com JavaREST Web Services com Java
REST Web Services com Java
 
Redes servidor web
Redes servidor webRedes servidor web
Redes servidor web
 

Similar a Web Services

Web Services (in portuguese)
Web Services (in portuguese)Web Services (in portuguese)
Web Services (in portuguese)Bruno Pedro
 
Desenvolvimento em Três Camadas com PHP, MVC e Ajax
Desenvolvimento em Três Camadas com PHP, MVC e AjaxDesenvolvimento em Três Camadas com PHP, MVC e Ajax
Desenvolvimento em Três Camadas com PHP, MVC e AjaxAlmir Neto
 
Desenvolvimento em três camadas com PHP 5, MVC e AJAX
Desenvolvimento em três camadas com PHP 5, MVC e AJAXDesenvolvimento em três camadas com PHP 5, MVC e AJAX
Desenvolvimento em três camadas com PHP 5, MVC e AJAXOtávio Calaça Xavier
 
Tecnologias Web 2.0
Tecnologias Web 2.0 Tecnologias Web 2.0
Tecnologias Web 2.0 Duarte Nunes
 
4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdf4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdfRubenManhia
 
FISL12. Web Services e Computação em Nuvem com PHP
FISL12. Web Services e Computação em Nuvem com PHPFISL12. Web Services e Computação em Nuvem com PHP
FISL12. Web Services e Computação em Nuvem com PHPFlávio Lisboa
 
WebAPI-Route-Translate-BasicAuth
WebAPI-Route-Translate-BasicAuthWebAPI-Route-Translate-BasicAuth
WebAPI-Route-Translate-BasicAuthJean Lima Lopes
 
Aplicações Web Multiplataforma com ASP .NET Core MVC - FATEC
Aplicações Web Multiplataforma com ASP .NET Core MVC - FATECAplicações Web Multiplataforma com ASP .NET Core MVC - FATEC
Aplicações Web Multiplataforma com ASP .NET Core MVC - FATECRafael Pessoni
 
Desenvolvimento em Três Camadas com PHP, MVC e AJAX
Desenvolvimento em Três Camadas com PHP, MVC e AJAXDesenvolvimento em Três Camadas com PHP, MVC e AJAX
Desenvolvimento em Três Camadas com PHP, MVC e AJAXManuel Lemos
 
Workshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha BásicaWorkshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha BásicaSensedia
 
AAB306 - Wcf Services Best Practices - wcamb
AAB306 - Wcf Services Best Practices - wcambAAB306 - Wcf Services Best Practices - wcamb
AAB306 - Wcf Services Best Practices - wcambMicrosoft Brasil
 
JustJava 2005: Web Services em Java com o JWSDP 1.5
JustJava 2005: Web Services em Java com o JWSDP 1.5JustJava 2005: Web Services em Java com o JWSDP 1.5
JustJava 2005: Web Services em Java com o JWSDP 1.5Helder da Rocha
 
Mini-Curso de Sockets no Unipê
Mini-Curso de Sockets no UnipêMini-Curso de Sockets no Unipê
Mini-Curso de Sockets no UnipêElenilson Vieira
 
User Interface (in portuguese)
User Interface (in portuguese)User Interface (in portuguese)
User Interface (in portuguese)Bruno Pedro
 
Distribuindo Aplicações com WCF
Distribuindo Aplicações com WCFDistribuindo Aplicações com WCF
Distribuindo Aplicações com WCF.NetArchitects
 
Chamada remota de procedimentos .net
Chamada remota de procedimentos   .netChamada remota de procedimentos   .net
Chamada remota de procedimentos .netGabii Fonseca
 
Arquitetura Web Desacoplada - FCI/Mackenzie
Arquitetura Web Desacoplada - FCI/MackenzieArquitetura Web Desacoplada - FCI/Mackenzie
Arquitetura Web Desacoplada - FCI/MackenzieVivaldo Jose Breternitz
 
Linguagem PHP para principiantes
Linguagem PHP para principiantesLinguagem PHP para principiantes
Linguagem PHP para principiantesMarco Pinheiro
 

Similar a Web Services (20)

Web Services (in portuguese)
Web Services (in portuguese)Web Services (in portuguese)
Web Services (in portuguese)
 
Mac5700
Mac5700Mac5700
Mac5700
 
Desenvolvimento em Três Camadas com PHP, MVC e Ajax
Desenvolvimento em Três Camadas com PHP, MVC e AjaxDesenvolvimento em Três Camadas com PHP, MVC e Ajax
Desenvolvimento em Três Camadas com PHP, MVC e Ajax
 
Desenvolvimento em três camadas com PHP 5, MVC e AJAX
Desenvolvimento em três camadas com PHP 5, MVC e AJAXDesenvolvimento em três camadas com PHP 5, MVC e AJAX
Desenvolvimento em três camadas com PHP 5, MVC e AJAX
 
Tecnologias Web 2.0
Tecnologias Web 2.0 Tecnologias Web 2.0
Tecnologias Web 2.0
 
4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdf4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdf
 
FISL12. Web Services e Computação em Nuvem com PHP
FISL12. Web Services e Computação em Nuvem com PHPFISL12. Web Services e Computação em Nuvem com PHP
FISL12. Web Services e Computação em Nuvem com PHP
 
WebAPI-Route-Translate-BasicAuth
WebAPI-Route-Translate-BasicAuthWebAPI-Route-Translate-BasicAuth
WebAPI-Route-Translate-BasicAuth
 
Aplicações Web Multiplataforma com ASP .NET Core MVC - FATEC
Aplicações Web Multiplataforma com ASP .NET Core MVC - FATECAplicações Web Multiplataforma com ASP .NET Core MVC - FATEC
Aplicações Web Multiplataforma com ASP .NET Core MVC - FATEC
 
Desenvolvimento em Três Camadas com PHP, MVC e AJAX
Desenvolvimento em Três Camadas com PHP, MVC e AJAXDesenvolvimento em Três Camadas com PHP, MVC e AJAX
Desenvolvimento em Três Camadas com PHP, MVC e AJAX
 
Workshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha BásicaWorkshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha Básica
 
AAB306 - Wcf Services Best Practices - wcamb
AAB306 - Wcf Services Best Practices - wcambAAB306 - Wcf Services Best Practices - wcamb
AAB306 - Wcf Services Best Practices - wcamb
 
JustJava 2005: Web Services em Java com o JWSDP 1.5
JustJava 2005: Web Services em Java com o JWSDP 1.5JustJava 2005: Web Services em Java com o JWSDP 1.5
JustJava 2005: Web Services em Java com o JWSDP 1.5
 
Mini-Curso de Sockets no Unipê
Mini-Curso de Sockets no UnipêMini-Curso de Sockets no Unipê
Mini-Curso de Sockets no Unipê
 
User Interface (in portuguese)
User Interface (in portuguese)User Interface (in portuguese)
User Interface (in portuguese)
 
Programação web ASP.NET Tutorial
Programação web ASP.NET TutorialProgramação web ASP.NET Tutorial
Programação web ASP.NET Tutorial
 
Distribuindo Aplicações com WCF
Distribuindo Aplicações com WCFDistribuindo Aplicações com WCF
Distribuindo Aplicações com WCF
 
Chamada remota de procedimentos .net
Chamada remota de procedimentos   .netChamada remota de procedimentos   .net
Chamada remota de procedimentos .net
 
Arquitetura Web Desacoplada - FCI/Mackenzie
Arquitetura Web Desacoplada - FCI/MackenzieArquitetura Web Desacoplada - FCI/Mackenzie
Arquitetura Web Desacoplada - FCI/Mackenzie
 
Linguagem PHP para principiantes
Linguagem PHP para principiantesLinguagem PHP para principiantes
Linguagem PHP para principiantes
 

Más de codebits

Gis SAPO Hands On
Gis SAPO Hands OnGis SAPO Hands On
Gis SAPO Hands Oncodebits
 
Aplicações Web TV no Meo
Aplicações Web TV no MeoAplicações Web TV no Meo
Aplicações Web TV no Meocodebits
 
Forms Usability 101
Forms Usability 101Forms Usability 101
Forms Usability 101codebits
 
Speak up: como criar Speech-based apps
Speak up: como criar Speech-based appsSpeak up: como criar Speech-based apps
Speak up: como criar Speech-based appscodebits
 
XMPP Hands-On
XMPP Hands-OnXMPP Hands-On
XMPP Hands-Oncodebits
 
Mitos da Acessibilidade Web
Mitos da Acessibilidade WebMitos da Acessibilidade Web
Mitos da Acessibilidade Webcodebits
 
Getting started with mobile devices development - Openmoko Freerunner
Getting started with mobile devices development - Openmoko FreerunnerGetting started with mobile devices development - Openmoko Freerunner
Getting started with mobile devices development - Openmoko Freerunnercodebits
 
Hardware Hacking area: Make Cool Things with Microcontrollers (and learn to s...
Hardware Hacking area: Make Cool Things with Microcontrollers (and learn to s...Hardware Hacking area: Make Cool Things with Microcontrollers (and learn to s...
Hardware Hacking area: Make Cool Things with Microcontrollers (and learn to s...codebits
 
Getting started with mobile devices development - Openmoko Freerunner
Getting started with mobile devices development - Openmoko FreerunnerGetting started with mobile devices development - Openmoko Freerunner
Getting started with mobile devices development - Openmoko Freerunnercodebits
 
Exploring XMPP
Exploring XMPPExploring XMPP
Exploring XMPPcodebits
 
Sapo BUS Hands-On
Sapo BUS Hands-OnSapo BUS Hands-On
Sapo BUS Hands-Oncodebits
 
Qtractor - An Audio/MIDI multi-track sequencer
Qtractor - An Audio/MIDI multi-track sequencerQtractor - An Audio/MIDI multi-track sequencer
Qtractor - An Audio/MIDI multi-track sequencercodebits
 
Making the Chumby
Making the ChumbyMaking the Chumby
Making the Chumbycodebits
 
Globs - Gestão de Glossários
Globs - Gestão de GlossáriosGlobs - Gestão de Glossários
Globs - Gestão de Glossárioscodebits
 
ATrad - Sistema de Garantia de Qualidade de Traduções
ATrad - Sistema de Garantia de Qualidade de TraduçõesATrad - Sistema de Garantia de Qualidade de Traduções
ATrad - Sistema de Garantia de Qualidade de Traduçõescodebits
 
Alto Desempenho com Java
Alto Desempenho com JavaAlto Desempenho com Java
Alto Desempenho com Javacodebits
 
Sapo GIS Hands-On
Sapo GIS Hands-OnSapo GIS Hands-On
Sapo GIS Hands-Oncodebits
 
Practical Thin Server Architecture With Dojo Sapo Codebits 2008
Practical Thin Server Architecture With Dojo Sapo Codebits 2008Practical Thin Server Architecture With Dojo Sapo Codebits 2008
Practical Thin Server Architecture With Dojo Sapo Codebits 2008codebits
 

Más de codebits (20)

Gis SAPO Hands On
Gis SAPO Hands OnGis SAPO Hands On
Gis SAPO Hands On
 
Aplicações Web TV no Meo
Aplicações Web TV no MeoAplicações Web TV no Meo
Aplicações Web TV no Meo
 
Forms Usability 101
Forms Usability 101Forms Usability 101
Forms Usability 101
 
Speak up: como criar Speech-based apps
Speak up: como criar Speech-based appsSpeak up: como criar Speech-based apps
Speak up: como criar Speech-based apps
 
XMPP Hands-On
XMPP Hands-OnXMPP Hands-On
XMPP Hands-On
 
Mitos da Acessibilidade Web
Mitos da Acessibilidade WebMitos da Acessibilidade Web
Mitos da Acessibilidade Web
 
Getting started with mobile devices development - Openmoko Freerunner
Getting started with mobile devices development - Openmoko FreerunnerGetting started with mobile devices development - Openmoko Freerunner
Getting started with mobile devices development - Openmoko Freerunner
 
Hardware Hacking area: Make Cool Things with Microcontrollers (and learn to s...
Hardware Hacking area: Make Cool Things with Microcontrollers (and learn to s...Hardware Hacking area: Make Cool Things with Microcontrollers (and learn to s...
Hardware Hacking area: Make Cool Things with Microcontrollers (and learn to s...
 
CouchDB
CouchDBCouchDB
CouchDB
 
Getting started with mobile devices development - Openmoko Freerunner
Getting started with mobile devices development - Openmoko FreerunnerGetting started with mobile devices development - Openmoko Freerunner
Getting started with mobile devices development - Openmoko Freerunner
 
Exploring XMPP
Exploring XMPPExploring XMPP
Exploring XMPP
 
Sapo BUS Hands-On
Sapo BUS Hands-OnSapo BUS Hands-On
Sapo BUS Hands-On
 
Qtractor - An Audio/MIDI multi-track sequencer
Qtractor - An Audio/MIDI multi-track sequencerQtractor - An Audio/MIDI multi-track sequencer
Qtractor - An Audio/MIDI multi-track sequencer
 
Making the Chumby
Making the ChumbyMaking the Chumby
Making the Chumby
 
Globs - Gestão de Glossários
Globs - Gestão de GlossáriosGlobs - Gestão de Glossários
Globs - Gestão de Glossários
 
ATrad - Sistema de Garantia de Qualidade de Traduções
ATrad - Sistema de Garantia de Qualidade de TraduçõesATrad - Sistema de Garantia de Qualidade de Traduções
ATrad - Sistema de Garantia de Qualidade de Traduções
 
Alto Desempenho com Java
Alto Desempenho com JavaAlto Desempenho com Java
Alto Desempenho com Java
 
Sapo GIS Hands-On
Sapo GIS Hands-OnSapo GIS Hands-On
Sapo GIS Hands-On
 
Gis@sapo
Gis@sapoGis@sapo
Gis@sapo
 
Practical Thin Server Architecture With Dojo Sapo Codebits 2008
Practical Thin Server Architecture With Dojo Sapo Codebits 2008Practical Thin Server Architecture With Dojo Sapo Codebits 2008
Practical Thin Server Architecture With Dojo Sapo Codebits 2008
 

Web Services

  • 1. Web Services em PHP SAPO CodeBits - 13 de Novembro de 2007 Bruno Pedro <bpedro@computer.org>
  • 2. SAPO CodeBits 2007 Conteúdo • Conceitos • Web Services • SOAP • REST • JSON • Exercícios • Resumo Web Services em PHP 2
  • 3. SAPO CodeBits 2007 Web Services Source:The Server Side (http://tinyurl.com/38umxt) Web Services em PHP 3
  • 4. SAPO CodeBits 2007 O que são Web Services? • Interacções inter-operáveis • Invocações são feitas através da rede • Existem bastantes standards • Usados pela maioria dos serviços Web 2.0 Web Services em PHP 4
  • 5. SAPO CodeBits 2007 WSDL • Web Services Description Language • Linguagem XML • Descreve um Web Service • operações disponíveis • localizações ou endpoints Web Services em PHP 5
  • 6. SAPO CodeBits 2007 WSDL • UML use-case WSDL <obtém> <consome> aplicação Web Service Web Services em PHP 6
  • 7. SAPO CodeBits 2007 WS-I • Web Services Interoperability Organization • Consórcio de várias empresas • Promove a inter-operabilidade de Web Services • Define perfis de utilização • Basic Profile (BP) • Security Profile (SP) • Simple SOAP Binding Profile (SSBP) Web Services em PHP 7
  • 8. SAPO CodeBits 2007 Requisitos • PHP 5.2.2 • Suporte para SOAP • Extensão simplexml • Extensão DOM • Extensão JSON Web Services em PHP 8
  • 9. SAPO CodeBits 2007 SOAP Fonte: Prentice Hall (http://tinyurl.com/33dcch) Web Services em PHP 9
  • 10. SAPO CodeBits 2007 SOAP • Simple Object Access Protocol • Normalmente é um pedido HTTP POST • A chamada é encapsulada XML • A resposta é um documento XML • PHP gere todo o processo Web Services em PHP 10
  • 11. SAPO CodeBits 2007 Implementação: servidor namespace inicia o servidor assigna uma classe gere invocações Web Services em PHP 11
  • 12. SAPO CodeBits 2007 Implementação: cliente namespace endpoint mostra resultado Web Services em PHP 12
  • 13. SAPO CodeBits 2007 Output namespace resultado Web Services em PHP 13
  • 14. SAPO CodeBits 2007 Persistência • Problema: informação perde-se entre várias invocações do Web Service • Como resolver? Web Services em PHP 14
  • 15. SAPO CodeBits 2007 SOAP: resumo • Suporte para SOAP 1.1, 1.2 e WSDL 1.1 • Gere tipos de dados simples e complexos • Implementação muito simples • Output é demasiado “pesado” Web Services em PHP 15
  • 16. SAPO CodeBits 2007 REST «interface» /calculator/sum/ Resource GET - perform a calculation GET PUT - not used PUT POST - not used POST DELETE - not used DELETE http://example.com/calculator/sum/?x=121&y=233 Web Services em PHP 16
  • 17. SAPO CodeBits 2007 REST • Representational State Transfer • Normalmente utilizado através de um pedido HTTP GET • Invocação é feita através de parâmetros GET • Resposta é um documento XML • Criação da resposta com DOM • Interpretação da resposta com simplexml Web Services em PHP 17
  • 18. SAPO CodeBits 2007 Implementação: servidor gere a invocação Web Services em PHP 18
  • 19. SAPO CodeBits 2007 DOM • Document Object Model • Extensão de PHP • Instalada por omissão • Permite manuseamento de documentos XML usando a árvore DOM • Mais simples do que manipular blocos de texto Web Services em PHP 19
  • 20. SAPO CodeBits 2007 Implementação: servidor cria um documento XML adiciona elementos devolve o resultado Web Services em PHP 20
  • 21. SAPO CodeBits 2007 simplexml • Extensão de PHP • Instalada por omissão • Permite converter um documento XML num objecto • Permite o manuseamento de documentos XML de uma forma muito fácil Web Services em PHP 21
  • 22. SAPO CodeBits 2007 Implementação: cliente endpoint arguments load XML document output result Web Services em PHP 22
  • 23. SAPO CodeBits 2007 Output result Web Services em PHP 23
  • 24. SAPO CodeBits 2007 REST: resumo • É necessário implementar toda a interacção cliente/servidor • O schema do XML tem que ser conhecido pelo cliente para que consiga interpretar a resposta • Não é possível gerir tipos complexos • resolução através de serialização • A resposta é geralmente RSS Web Services em PHP 24
  • 25. SAPO CodeBits 2007 JSON JSON Logo Source: json.org Web Services em PHP 25
  • 26. SAPO CodeBits 2007 JSON • JavaScript Object Notation • Aproximação REST • Resposta não é XML • É invocado pelo browser • Resposta é gerada por json_encode() • Resposta é interpretada por JavaScript Web Services em PHP 26
  • 27. SAPO CodeBits 2007 Implementação: servidor handle incoming call generate result output JSON string Web Services em PHP 27
  • 28. SAPO CodeBits 2007 Implementação: cliente endpoint parâmetros mostra output Web Services em PHP 28
  • 29. SAPO CodeBits 2007 Output resultado Web Services em PHP 29
  • 30. SAPO CodeBits 2007 JSON • Filosofia REST • Gere tipos de dados simples e complexos • As chamadas podem ser efectuadas usando AJAX • Pode também ser utilizado server-side, servindo de transporte de informação Web Services em PHP 30
  • 31. SAPO CodeBits 2007 Exemplo • Consumir Web Service SAPO • implementar cliente SOAP • implementar cliente REST Web Services em PHP 31
  • 32. SAPO CodeBits 2007 Serviços SAPO • http://services.sapo.pt/ • Lista de serviços disponíveis • Documentação de cada serviço • Geração de código cliente Web Services em PHP 32
  • 33. SAPO CodeBits 2007 Implementação SOAP Web Services em PHP 33
  • 34. SAPO CodeBits 2007 Implementação SOAP Web Services em PHP 34
  • 35. SAPO CodeBits 2007 Implementação REST Web Services em PHP 35
  • 36. SAPO CodeBits 2007 Resumo • WSDL, WS-I • SOAP • REST • JSON • Exemplos Web Services em PHP 36
  • 37. SAPO CodeBits 2007 Questões? Web Services em PHP 37
  • 38. SAPO CodeBits 2007 Mais informação • My blog: http://unfoldingtheweb.com/ • PHP Manual: http://www.php.net/ • SOAP: http://www.w3.org/TR/soap/ • REST: http://tinyurl.com/akhc7 • JSON: http://www.json.org/ Web Services em PHP 38