Web Services

Post on 07-Dec-2014

4,702 views 4 download

Tags:

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.

transcript

Web Services em PHP

Bruno Pedro <bpedro@computer.org>

SAPO CodeBits - 13 de Novembro de 2007

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/