O documento apresenta os conceitos de web services em PHP, incluindo SOAP, REST e JSON. Discute implementações de serviços web usando esses protocolos, com exemplos de como criar serviços e consumi-los. Também cobre tópicos como WSDL, UDDI, persistência de dados e exercícios práticos de implementação de serviços de cálculo e do SAPO.
1. Web Services em PHP
PHP Summer School - 19 de Julho de 2007
Bruno Pedro <bpedro@computer.org>
2. PHP Summer School
Conteúdo
• Conceitos
• Web Services
• SOAP
• REST
• JSON
• Exercícios
• Resumo
Web Services em PHP 2
3. PHP Summer School
Web Services
Source:The Server Side
(http://tinyurl.com/38umxt)
Web Services em PHP 3
4. PHP Summer School
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. PHP Summer School
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. PHP Summer School
WSDL
• UML use-case
WSDL
<obtém>
<consome>
aplicação
Web Service
Web Services em PHP 6
7. PHP Summer School
UDDI
• Universal Description, Discovery and
Integration
• Registo central de Web Services
• Conceito “Páginas Amarelas”
• Devolve localizações de Web Services
• Pouco utilizado na Internet
Web Services em PHP 7
8. PHP Summer School
UDDI
• UML use-case
UDDI
<localiza WSDL>
<obtém> WSDL
<consome>
aplicação
Web Service
Web Services em PHP 8
9. PHP Summer School
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 9
10. PHP Summer School
Requisitos
• PHP 5.2.2
• Suporte para SOAP
• Extensão simplexml
• Extensão DOM
• Extensão JSON
Web Services em PHP 10
11. PHP Summer School
SOAP
Fonte: Prentice Hall
(http://tinyurl.com/33dcch)
Web Services em PHP 11
12. PHP Summer School
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 12
13. PHP Summer School
Implementação: servidor
namespace
inicia o servidor
assigna uma classe
gere invocações
Web Services em PHP 13
14. PHP Summer School
Implementação: cliente
namespace
endpoint
mostra resultado
Web Services em PHP 14
16. PHP Summer School
Persistência
• Problema: informação perde-se entre
várias invocações do Web Service
• Como resolver?
Web Services em PHP 16
17. PHP Summer School
Persistência
• Utilização do método
SoapServer::setPersistence()
• Persistência é totalmente gerida pelo PHP
• Só funciona se o servidor exportar as
operações a partir de uma classe
• Informação fica disponível entre várias
invocações
Web Services em PHP 17
18. PHP Summer School
Persistência: servidor
persistência
Web Services em PHP 18
19. PHP Summer School
Persistência: cliente
grava informação
mostra informação
previamente gravada
Web Services em PHP 19
20. PHP Summer School
SOAP: resumo
• Suporte para SOAP 1.1, 1.2 e WSDL 1.1
• Gere tipos de dados simples e complexos
• Gere persistência de informação
• Implementação muito simples
• Output é demasiado “pesado”
Web Services em PHP 20
21. PHP Summer School
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 21
22. PHP Summer School
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 22
23. PHP Summer School
Implementação: servidor
gere a invocação
Web Services em PHP 23
24. PHP Summer School
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 24
26. PHP Summer School
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 26
27. PHP Summer School
Implementação: cliente
endpoint
arguments
load XML document
output result
Web Services em PHP 27
29. PHP Summer School
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 29
30. PHP Summer School
JSON
JSON Logo
Source: json.org
Web Services em PHP 30
31. PHP Summer School
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 31
35. PHP Summer School
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 35
36. PHP Summer School
Exercício 1
• Implementação da Calculadora em Web
Service SOAP
• implementar servidor
• implementar cliente
• adicionar persistência de dados
Web Services em PHP 36