38
Web Services em PHP Bruno Pedro <[email protected] > SAPO CodeBits - 13 de Novembro de 2007

Web Services

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

Page 1: Web Services

Web Services em PHP

Bruno Pedro <[email protected]>

SAPO CodeBits - 13 de Novembro de 2007

Page 2: Web Services

Web Services em PHP

SAPO CodeBits 2007

Conteúdo• Conceitos

• Web Services

• SOAP

• REST

• JSON

• Exercícios

• Resumo

2

Page 3: Web Services

Web Services em PHP

SAPO CodeBits 2007

Web Services

3

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

Page 4: Web Services

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

Page 5: Web Services

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

Page 6: Web Services

Web Services em PHP

SAPO CodeBits 2007

WSDL

6

aplicação

<obtém>

WSDL

<consome>

Web Service

• UML use-case

Page 7: Web Services

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

Page 8: Web Services

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

Page 9: Web Services

Web Services em PHP

SAPO CodeBits 2007

SOAP

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

9

Page 10: Web Services

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

Page 11: Web Services

Web Services em PHP

SAPO CodeBits 2007

Implementação: servidor

11

namespace

inicia o servidor

assigna uma classe

gere invocações

Page 12: Web Services

Web Services em PHP

SAPO CodeBits 2007

Implementação: cliente

12

namespace

endpoint

mostra resultado

Page 13: Web Services

Web Services em PHP

SAPO CodeBits 2007

Output

13

namespace

resultado

Page 14: Web Services

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?

Page 15: Web Services

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”

Page 16: Web Services

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

Page 17: Web Services

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

Page 18: Web Services

Web Services em PHP

SAPO CodeBits 2007

Implementação: servidor

18

gere a invocação

Page 19: Web Services

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

Page 20: Web Services

Web Services em PHP

SAPO CodeBits 2007

Implementação: servidor

20

cria umdocumento XML

adicionaelementos

devolve o resultado

Page 21: Web Services

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

Page 22: Web Services

Web Services em PHP

SAPO CodeBits 2007

Implementação: cliente

22

endpoint

arguments

load XML document

output result

Page 23: Web Services

Web Services em PHP

SAPO CodeBits 2007

Output

23

result

Page 24: Web Services

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

Page 25: Web Services

Web Services em PHP

SAPO CodeBits 2007

JSON

25

JSON LogoSource: json.org

Page 26: Web Services

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

Page 27: Web Services

Web Services em PHP

SAPO CodeBits 2007

Implementação: servidor

27

handle incoming call

generate result

outputJSON string

Page 28: Web Services

Web Services em PHP

SAPO CodeBits 2007

Implementação: cliente

28

endpoint

parâmetros

mostra output

Page 29: Web Services

Web Services em PHP

SAPO CodeBits 2007

Output

29

resultado

Page 30: Web Services

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

Page 31: Web Services

Web Services em PHP

SAPO CodeBits 2007

Exemplo

• Consumir Web Service SAPO

• implementar cliente SOAP

• implementar cliente REST

31

Page 32: Web Services

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

Page 33: Web Services

Web Services em PHP

SAPO CodeBits 2007

Implementação SOAP

33

Page 34: Web Services

Web Services em PHP

SAPO CodeBits 2007

Implementação SOAP

34

Page 35: Web Services

Web Services em PHP

SAPO CodeBits 2007

Implementação REST

35

Page 36: Web Services

Web Services em PHP

SAPO CodeBits 2007

Resumo

• WSDL, WS-I

• SOAP

• REST

• JSON

• Exemplos

36

Page 37: Web Services

Web Services em PHP

SAPO CodeBits 2007

Questões?

37

Page 38: Web Services

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/