Upload
codebits
View
4.712
Download
4
Tags:
Embed Size (px)
DESCRIPTION
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.
Citation preview
Web Services em PHP
SAPO CodeBits 2007
Conteúdo• Conceitos
• Web Services
• SOAP
• REST
• JSON
• Exercícios
• Resumo
2
Web Services em PHP
SAPO CodeBits 2007
Web Services
3
Source: The Server Side(http://tinyurl.com/38umxt)
Web Services em PHP
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
4
Web Services em PHP
SAPO CodeBits 2007
WSDL
• Web Services Description Language
• Linguagem XML
• Descreve um Web Service
• operações disponíveis
• localizações ou endpoints
5
Web Services em PHP
SAPO CodeBits 2007
WSDL
6
aplicação
<obtém>
WSDL
<consome>
Web Service
• UML use-case
Web Services em PHP
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)7
Web Services em PHP
SAPO CodeBits 2007
Requisitos
• PHP 5.2.2
• Suporte para SOAP
• Extensão simplexml
• Extensão DOM
• Extensão JSON
8
Web Services em PHP
SAPO CodeBits 2007
SOAP
Fonte: Prentice Hall(http://tinyurl.com/33dcch)
9
Web Services em PHP
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
10
Web Services em PHP
SAPO CodeBits 2007
Implementação: servidor
11
namespace
inicia o servidor
assigna uma classe
gere invocações
Web Services em PHP
SAPO CodeBits 2007
Implementação: cliente
12
namespace
endpoint
mostra resultado
Web Services em PHP
SAPO CodeBits 2007
Output
13
namespace
resultado
Web Services em PHP
SAPO CodeBits 2007
Persistência
14
• Problema: informação perde-se entre várias invocações do Web Service
• Como resolver?
Web Services em PHP
SAPO CodeBits 2007
SOAP: resumo
15
• 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
SAPO CodeBits 2007
REST
http://example.com/calculator/sum/?x=121&y=233
GETPUTPOSTDELETE
«interface»
ResourceGET - perform a calculationPUT - not usedPOST - not usedDELETE - not used
/calculator/sum/
16
Web Services em PHP
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
17
Web Services em PHP
SAPO CodeBits 2007
Implementação: servidor
18
gere a invocação
Web Services em PHP
SAPO CodeBits 2007
DOM
19
• 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
SAPO CodeBits 2007
Implementação: servidor
20
cria umdocumento XML
adicionaelementos
devolve o resultado
Web Services em PHP
SAPO CodeBits 2007
simplexml
21
• 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
SAPO CodeBits 2007
Implementação: cliente
22
endpoint
arguments
load XML document
output result
Web Services em PHP
SAPO CodeBits 2007
Output
23
result
Web Services em PHP
SAPO CodeBits 2007
REST: resumo
24
• É 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
SAPO CodeBits 2007
JSON
25
JSON LogoSource: json.org
Web Services em PHP
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
26
Web Services em PHP
SAPO CodeBits 2007
Implementação: servidor
27
handle incoming call
generate result
outputJSON string
Web Services em PHP
SAPO CodeBits 2007
Implementação: cliente
28
endpoint
parâmetros
mostra output
Web Services em PHP
SAPO CodeBits 2007
Output
29
resultado
Web Services em PHP
SAPO CodeBits 2007
JSON
30
• 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
SAPO CodeBits 2007
Exemplo
• Consumir Web Service SAPO
• implementar cliente SOAP
• implementar cliente REST
31
Web Services em PHP
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
32
Web Services em PHP
SAPO CodeBits 2007
Implementação SOAP
33
Web Services em PHP
SAPO CodeBits 2007
Implementação SOAP
34
Web Services em PHP
SAPO CodeBits 2007
Implementação REST
35
Web Services em PHP
SAPO CodeBits 2007
Resumo
• WSDL, WS-I
• SOAP
• REST
• JSON
• Exemplos
36
Web Services em PHP
SAPO CodeBits 2007
Questões?
37
Web Services em PHP
SAPO CodeBits 2007
Mais informação
38
• 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/