Através da utilização de funções nativas de PHP5 é possível implementar produtores (servidores) e consumidores (clientes) de Web Services.
Vários conceitos teóricos serão abordados, como o HTTP GET e POST, o SOAP, o REST e o WSDL (/Web Services Description Language/). A apresentação terá ainda uma componente prática onde serão demonstradas implementações de Web Services SOAP e REST, utilizando para isso exemplos de consumo de fontes do SAPO.
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
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
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
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
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