45
Web Services em PHP Bruno Pedro <[email protected] > PHP Summer School - 19 de Julho de 2007

Web Services (in portuguese)

Embed Size (px)

DESCRIPTION

Web Services in PHP5

Citation preview

Page 1: Web Services (in portuguese)

Web Services em PHP

Bruno Pedro <[email protected]>

PHP Summer School - 19 de Julho de 2007

Page 2: Web Services (in portuguese)

Web Services em PHP

PHP Summer School

Conteúdo• Conceitos

• Web Services

• SOAP

• REST

• JSON

• Exercícios

• Resumo

2

Page 3: Web Services (in portuguese)

Web Services em PHP

PHP Summer School

Web Services

3

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

Page 4: Web Services (in portuguese)

Web Services em PHP

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

4

Page 5: Web Services (in portuguese)

Web Services em PHP

PHP Summer School

WSDL

• Web Services Description Language

• Linguagem XML

• Descreve um Web Service

• operações disponíveis

• localizações ou endpoints

5

Page 6: Web Services (in portuguese)

Web Services em PHP

PHP Summer School

WSDL

6

aplicação

<obtém>

WSDL

<consome>

Web Service

• UML use-case

Page 7: Web Services (in portuguese)

Web Services em PHP

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

7

Page 8: Web Services (in portuguese)

Web Services em PHP

PHP Summer School

UDDI

8

aplicação

<obtém> WSDL

<consome>

Web Service

UDDI

<localiza WSDL>

• UML use-case

Page 9: Web Services (in portuguese)

Web Services em PHP

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)9

Page 10: Web Services (in portuguese)

Web Services em PHP

PHP Summer School

Requisitos

• PHP 5.2.2

• Suporte para SOAP

• Extensão simplexml

• Extensão DOM

• Extensão JSON

10

Page 11: Web Services (in portuguese)

Web Services em PHP

PHP Summer School

SOAP

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

11

Page 12: Web Services (in portuguese)

Web Services em PHP

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

12

Page 13: Web Services (in portuguese)

Web Services em PHP

PHP Summer School

Implementação: servidor

13

namespace

inicia o servidor

assigna uma classe

gere invocações

Page 14: Web Services (in portuguese)

Web Services em PHP

PHP Summer School

Implementação: cliente

14

namespace

endpoint

mostra resultado

Page 15: Web Services (in portuguese)

Web Services em PHP

PHP Summer School

Output

15

namespace

resultado

Page 16: Web Services (in portuguese)

Web Services em PHP

PHP Summer School

Persistência

16

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

• Como resolver?

Page 17: Web Services (in portuguese)

Web Services em PHP

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

17

Page 18: Web Services (in portuguese)

Web Services em PHP

PHP Summer School

Persistência: servidor

18

persistência

Page 19: Web Services (in portuguese)

Web Services em PHP

PHP Summer School

Persistência: cliente

19

grava informação

mostra informaçãopreviamente gravada

Page 20: Web Services (in portuguese)

Web Services em PHP

PHP Summer School

SOAP: resumo

20

• 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”

Page 21: Web Services (in portuguese)

Web Services em PHP

PHP Summer School

REST

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

GETPUTPOSTDELETE

«interface»

ResourceGET - perform a calculationPUT - not usedPOST - not usedDELETE - not used

/calculator/sum/

21

Page 22: Web Services (in portuguese)

Web Services em PHP

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

22

Page 23: Web Services (in portuguese)

Web Services em PHP

PHP Summer School

Implementação: servidor

23

gere a invocação

Page 24: Web Services (in portuguese)

Web Services em PHP

PHP Summer School

DOM

24

• 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

Page 25: Web Services (in portuguese)

Web Services em PHP

PHP Summer School

Implementação: servidor

25

cria umdocumento XML

adicionaelementos

devolve o resultado

Page 26: Web Services (in portuguese)

Web Services em PHP

PHP Summer School

simplexml

26

• 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

Page 27: Web Services (in portuguese)

Web Services em PHP

PHP Summer School

Implementação: cliente

27

endpoint

arguments

load XML document

output result

Page 28: Web Services (in portuguese)

Web Services em PHP

PHP Summer School

Output

28

result

Page 29: Web Services (in portuguese)

Web Services em PHP

PHP Summer School

REST: resumo

29

• É 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

Page 30: Web Services (in portuguese)

Web Services em PHP

PHP Summer School

JSON

30

JSON LogoSource: json.org

Page 31: Web Services (in portuguese)

Web Services em PHP

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

31

Page 32: Web Services (in portuguese)

Web Services em PHP

PHP Summer School

Implementação: servidor

32

handle incoming call

generate result

outputJSON string

Page 33: Web Services (in portuguese)

Web Services em PHP

PHP Summer School

Implementação: cliente

33

endpoint

parâmetros

mostra output

Page 34: Web Services (in portuguese)

Web Services em PHP

PHP Summer School

Output

34

resultado

Page 35: Web Services (in portuguese)

Web Services em PHP

PHP Summer School

JSON

35

• 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

Page 36: Web Services (in portuguese)

Web Services em PHP

PHP Summer School

Exercício 1

• Implementação da Calculadora em Web Service SOAP

• implementar servidor

• implementar cliente

• adicionar persistência de dados

36

Page 37: Web Services (in portuguese)

Web Services em PHP

PHP Summer School

Implementação: servidor

37

Page 38: Web Services (in portuguese)

Web Services em PHP

PHP Summer School

Implementação: servidor

38

Page 39: Web Services (in portuguese)

Web Services em PHP

PHP Summer School

Implementação: cliente

39

Page 40: Web Services (in portuguese)

Web Services em PHP

PHP Summer School

Exercício 2

• Consumir Web Service SAPO

• implementar cliente SOAP

• implementar cliente REST

40

Page 41: Web Services (in portuguese)

Web Services em PHP

PHP Summer School

Implementação: SOAP

41

Page 42: Web Services (in portuguese)

Web Services em PHP

PHP Summer School

Implementação: REST

42

Page 43: Web Services (in portuguese)

Web Services em PHP

PHP Summer School

Resumo

• WSDL, UDDI, WS-I

• SOAP

• Persistência de dados

• REST

• Passagem de parâmetros

• JSON

43

Page 44: Web Services (in portuguese)

Web Services em PHP

PHP Summer School

Questões?

44

Page 45: Web Services (in portuguese)

Web Services em PHP

PHP Summer School

Mais informação

45

• 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/