SlideShare uma empresa Scribd logo
1 de 34
Interagindo com web services
RPC, SOAP e REST
utilizando PHP
EDUARDO CESAR
DESENVOLVEDOR - DAKSA
TRILHA - PHP
WEB SERVICES
WEB SERVICES
AWeb service is a software system designed to
support interoperable machine-to-machine
interaction over a network. (W3C)
WEB SERVICES
Não importa se o software está consumindo ou
fornecendo um serviço, o web service é uma parte
fundamental em todo aplicativo.
(Mitchell,Web Services PHP, 2013)
SERVIÇOS RPC
SERVIÇOS RPC
Funciona sobre o modelo Cliente/Servidor
chamada de funções são similares a chamadas de
funções locais, a diferença que é nestes casos nem
sempre a máquina que processa a função é a
mesma que a invocou.
SERVIÇOS RPC
 Deve informar a função
e seus parâmetros
Cliente realiza uma
requisição
HTTP
 Arquivo XML com nome
da função e os
parâmetros a serem
processados informados
Conteúdo da
requisição
 Deve executar e
retornar os dados de
acordo com a função
informada na requisição
Servidor que irá
responder
Utilizando XML-RPC PHP
XML-RPC CLIENT PHP
Request
<?php
$request = xmlrpc_encode_request("createUser", ['eduardo']);
$server = 'http://localhost/web-services/xml-rpc/user/server.php';
$curl = curl_init($server);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $request);
$file = curl_exec($curl);
curl_close($curl);
$response = xmlrpc_decode($file);
echo $response;
XML-RPC CLIENT PHP
XML
<?xml version="1.0" encoding="iso-8859-1"?>
<methodCall>
<methodName>createUser</methodName>
<params>
<param>
<value>
<string>eduardo</string>
</value>
</param>
</params>
</methodCall>
XML-RPC CLIENT PHP
Response
<?php
function get(string $method_name) : array {/¨ do anything */}
function create(string $method_name, array $args) : string {/¨ do anything */}
function update(string $method_name, array $args) : string {/¨ do anything */}
function delete(string $method_name, array $args) : string{/¨ do anything */}
<?php
$request = file_get_contents("php://input");
$server = xmlrpc_server_create();
xmlrpc_server_register_method($server, "getUser", "get");
xmlrpc_server_register_method($server, "createUser", "create");
xmlrpc_server_register_method($server, "updateUser", "update");
xmlrpc_server_register_method($server, "deleteUser", "create");
header('Content-Type: text/xml');
print xmlrpc_server_call_method($server, $request, array());
SERVIÇOS SOAP
SERVIÇOS SOAP
... SOAP is a lightweight protocol for exchange of
information in a decentralized, distributed
environment…
(W3C)
SERVIÇOS SOAP
Pode ou não utilizarWSDL
Formato de requisição mais “rígidos”
Funciona como um serviço RPC
Utilizando SOAP PHP
SOAP CLIENT PHP
<?php
$options = [
'uri' => 'http://localhost/web-services/soap/user',
'location' => 'http://localhost/web-services/soap/user/server.php'
];
$api = new SoapClient(null, $options);
//$api = new SoapClient(“api.wsdl”);
foreach($api->get() as $user)
echo $user;
echo $api->create('luiz');
echo $api->update(1, 'cesar');
echo $api->delete(1);
O ENVELOPE SOAP
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope ...">
<SOAP-ENV:Body>
<ns1:create>
<nome xsi:type="xsd:string">eduardo</nome>
</ns1:create>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
SOAP SERVER PHP
<?php
class UserService
{
public function get() : array
{
return $this->users;
}
public function create(string $nome, string $email) : string
{
return 'user '.$nome.' created with success';
}
public function update(int $id, string $nome, string $email) : string
{
return 'user '.$id.' updated with success';
}
public function delete(int $id) : string
{
return 'user '.$id.' deleted with success';
}
}
<?php
ini_set('soap.wsdl_cache_enabled', 0);
$options = ['uri' => 'http://localhost/web-services/soap/mode-non-wsdl/user'];
$server = new SoapServer(null, $options);
//$server = new SoapServer("api.wsdl");
$server->setClass('UserService');
$server->handle();
SERVIÇOS REST
SERVIÇOS REST
…Diferente dos estilos XML-RPC ou SOAP, REST
tende mais a um conjunto de princípios do que um
protocolo…
(Mitchell,Web Services PHP, 2013)
SERVIÇOS REST
Uso do protocolo HTTP
Formato de requisição mais “flexível”
Não é um serviço RPC
SERVIÇOS REST PHP
SERVIÇOS REST PHP
<?php
$app->get(‘/users', function () {
});
$app = new SilexApplication();
$app->post('/users', function(Request $request) use($app) {
});
$app = new SlimApp;
$app->delete('/users/{id}', function (Request $request, Response $response) {
});
Referências
https://www.w3.org/TR/ws-arch/#introduction
http://xmlrpc.scripting.com/spec.html
http://php.net/xml-rpc
https://www.w3.org/TR/2000/NOTE-SOAP-20000508/
https://www.w3.org/TR/wsdl
http://php.net/soap
https://lumen.laravel.com/
https://silex.symfony.com/doc/2.0/
https://www.slimframework.com/
https://www.amazon.com/PHP-Web-Services-APIs-Modern/dp/1491933097
https://github.com/Bolinha1/web-services
/in/eduardo-cesar-oliveira
/Bolinha1
www.daksa.com.br
eduardo.borsato.oli@gmail.com
http://techinterior.com.br/
OBRIGADO!

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

SSO introduction
SSO introductionSSO introduction
SSO introduction
 
Spring Boot and REST API
Spring Boot and REST APISpring Boot and REST API
Spring Boot and REST API
 
Web API Basics
Web API BasicsWeb API Basics
Web API Basics
 
WEB SERVICE SOAP, JAVA, XML, JAXWS
WEB SERVICE SOAP, JAVA, XML, JAXWSWEB SERVICE SOAP, JAVA, XML, JAXWS
WEB SERVICE SOAP, JAVA, XML, JAXWS
 
Dependency Injection
Dependency InjectionDependency Injection
Dependency Injection
 
Microservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring CloudMicroservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring Cloud
 
Restful web services ppt
Restful web services pptRestful web services ppt
Restful web services ppt
 
Api presentation
Api presentationApi presentation
Api presentation
 
02 api gateway
02 api gateway02 api gateway
02 api gateway
 
Design Pattern - MVC, MVP and MVVM
Design Pattern - MVC, MVP and MVVMDesign Pattern - MVC, MVP and MVVM
Design Pattern - MVC, MVP and MVVM
 
Microservices with Java, Spring Boot and Spring Cloud
Microservices with Java, Spring Boot and Spring CloudMicroservices with Java, Spring Boot and Spring Cloud
Microservices with Java, Spring Boot and Spring Cloud
 
Rest API
Rest APIRest API
Rest API
 
Node JS Crash Course
Node JS Crash CourseNode JS Crash Course
Node JS Crash Course
 
What is an API
What is an APIWhat is an API
What is an API
 
Microservices Design Patterns Explained | Edureka
Microservices Design Patterns Explained | EdurekaMicroservices Design Patterns Explained | Edureka
Microservices Design Patterns Explained | Edureka
 
Microservice Architecture with CQRS and Event Sourcing
Microservice Architecture with CQRS and Event SourcingMicroservice Architecture with CQRS and Event Sourcing
Microservice Architecture with CQRS and Event Sourcing
 
Api types
Api typesApi types
Api types
 
Ter Web Service Intro
Ter Web Service IntroTer Web Service Intro
Ter Web Service Intro
 
Spring ioc
Spring iocSpring ioc
Spring ioc
 
Laravel Tutorial PPT
Laravel Tutorial PPTLaravel Tutorial PPT
Laravel Tutorial PPT
 

Semelhante a Interagindo com web services RPC, SOAP e REST utilizando PHP

Webservices e Computação em Nuvem com PHP
Webservices e Computação em Nuvem com PHPWebservices e Computação em Nuvem com PHP
Webservices e Computação em Nuvem com PHPFlávio Lisboa
 
Consumindo dados via web service no android
Consumindo dados via web service no androidConsumindo dados via web service no android
Consumindo dados via web service no androidAlexandre Antunes
 
InterCon 2017 - Design Coerente: decisões de tecnologia para APIs - Ravan Scafi
InterCon 2017 - Design Coerente: decisões de tecnologia para APIs - Ravan ScafiInterCon 2017 - Design Coerente: decisões de tecnologia para APIs - Ravan Scafi
InterCon 2017 - Design Coerente: decisões de tecnologia para APIs - Ravan ScafiiMasters
 
Rest In Peace com JBOSS RESTEasy
Rest In Peace com JBOSS RESTEasyRest In Peace com JBOSS RESTEasy
Rest In Peace com JBOSS RESTEasyArthur Cesar Oreana
 
De Web Services RESTful a Aplicações Mashup
De Web Services RESTful a Aplicações MashupDe Web Services RESTful a Aplicações Mashup
De Web Services RESTful a Aplicações MashupWagner Roberto dos Santos
 
Linguagem PHP para principiantes
Linguagem PHP para principiantesLinguagem PHP para principiantes
Linguagem PHP para principiantesMarco Pinheiro
 
Maratona JBoss 2010 - JBossWS
Maratona JBoss 2010 -  JBossWSMaratona JBoss 2010 -  JBossWS
Maratona JBoss 2010 - JBossWSDextra
 
Web Services - Grupo F
Web Services - Grupo FWeb Services - Grupo F
Web Services - Grupo Fmdmansur
 
Introdução à Servlets e JSP
Introdução à Servlets e JSPIntrodução à Servlets e JSP
Introdução à Servlets e JSPledsifes
 
Transformando eficientemente resultados de uma consulta jdbc para json
Transformando eficientemente resultados de uma consulta jdbc para jsonTransformando eficientemente resultados de uma consulta jdbc para json
Transformando eficientemente resultados de uma consulta jdbc para jsonJeison Barros
 
Flex 2.0 com PHP e MySQL
Flex 2.0 com PHP e MySQLFlex 2.0 com PHP e MySQL
Flex 2.0 com PHP e MySQLelliando dias
 
Web services, aplicações, acesso a aplicações, XML, API
Web services, aplicações, acesso a aplicações, XML, APIWeb services, aplicações, acesso a aplicações, XML, API
Web services, aplicações, acesso a aplicações, XML, APINuno Pereira
 
REST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfREST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfBrunoAlbuquerque864673
 
REST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfREST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfBrunoAlbuquerque864673
 
FISL12. Web Services e Computação em Nuvem com PHP
FISL12. Web Services e Computação em Nuvem com PHPFISL12. Web Services e Computação em Nuvem com PHP
FISL12. Web Services e Computação em Nuvem com PHPFlávio Lisboa
 
Web Sphere Application Server
Web Sphere Application ServerWeb Sphere Application Server
Web Sphere Application ServerFabricio Carvalho
 

Semelhante a Interagindo com web services RPC, SOAP e REST utilizando PHP (20)

Webservices e Computação em Nuvem com PHP
Webservices e Computação em Nuvem com PHPWebservices e Computação em Nuvem com PHP
Webservices e Computação em Nuvem com PHP
 
Consumindo dados via web service no android
Consumindo dados via web service no androidConsumindo dados via web service no android
Consumindo dados via web service no android
 
InterCon 2017 - Design Coerente: decisões de tecnologia para APIs - Ravan Scafi
InterCon 2017 - Design Coerente: decisões de tecnologia para APIs - Ravan ScafiInterCon 2017 - Design Coerente: decisões de tecnologia para APIs - Ravan Scafi
InterCon 2017 - Design Coerente: decisões de tecnologia para APIs - Ravan Scafi
 
Rest In Peace com JBOSS RESTEasy
Rest In Peace com JBOSS RESTEasyRest In Peace com JBOSS RESTEasy
Rest In Peace com JBOSS RESTEasy
 
De Web Services RESTful a Aplicações Mashup
De Web Services RESTful a Aplicações MashupDe Web Services RESTful a Aplicações Mashup
De Web Services RESTful a Aplicações Mashup
 
Linguagem PHP para principiantes
Linguagem PHP para principiantesLinguagem PHP para principiantes
Linguagem PHP para principiantes
 
Web service
Web serviceWeb service
Web service
 
Maratona JBoss 2010 - JBossWS
Maratona JBoss 2010 -  JBossWSMaratona JBoss 2010 -  JBossWS
Maratona JBoss 2010 - JBossWS
 
Web Services - Grupo F
Web Services - Grupo FWeb Services - Grupo F
Web Services - Grupo F
 
Web Sphere
Web SphereWeb Sphere
Web Sphere
 
Introdução à Servlets e JSP
Introdução à Servlets e JSPIntrodução à Servlets e JSP
Introdução à Servlets e JSP
 
Transformando eficientemente resultados de uma consulta jdbc para json
Transformando eficientemente resultados de uma consulta jdbc para jsonTransformando eficientemente resultados de uma consulta jdbc para json
Transformando eficientemente resultados de uma consulta jdbc para json
 
Flex 2.0 com PHP e MySQL
Flex 2.0 com PHP e MySQLFlex 2.0 com PHP e MySQL
Flex 2.0 com PHP e MySQL
 
Web services, aplicações, acesso a aplicações, XML, API
Web services, aplicações, acesso a aplicações, XML, APIWeb services, aplicações, acesso a aplicações, XML, API
Web services, aplicações, acesso a aplicações, XML, API
 
Palestra Sobre REST
Palestra Sobre RESTPalestra Sobre REST
Palestra Sobre REST
 
Rest X Graphql .pptx
Rest X Graphql .pptxRest X Graphql .pptx
Rest X Graphql .pptx
 
REST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfREST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdf
 
REST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfREST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdf
 
FISL12. Web Services e Computação em Nuvem com PHP
FISL12. Web Services e Computação em Nuvem com PHPFISL12. Web Services e Computação em Nuvem com PHP
FISL12. Web Services e Computação em Nuvem com PHP
 
Web Sphere Application Server
Web Sphere Application ServerWeb Sphere Application Server
Web Sphere Application Server
 

Mais de Eduardo Cesar

Vida longa ao legado
Vida longa ao legadoVida longa ao legado
Vida longa ao legadoEduardo Cesar
 
Uma linha tênue entre arquitetura de software e o dia a dia dev
Uma linha tênue entre arquitetura de software e o dia a dia devUma linha tênue entre arquitetura de software e o dia a dia dev
Uma linha tênue entre arquitetura de software e o dia a dia devEduardo Cesar
 
OOP, e uma visão que está além de classes e métodos
OOP, e uma visão que está além de classes e métodosOOP, e uma visão que está além de classes e métodos
OOP, e uma visão que está além de classes e métodosEduardo Cesar
 
Arquitetando aplicações php
Arquitetando aplicações phpArquitetando aplicações php
Arquitetando aplicações phpEduardo Cesar
 
Arquitetando sistemas PHP
Arquitetando sistemas PHPArquitetando sistemas PHP
Arquitetando sistemas PHPEduardo Cesar
 
Desbabravando linguagem GO
Desbabravando linguagem GODesbabravando linguagem GO
Desbabravando linguagem GOEduardo Cesar
 
Integrando aplicações, o que temos nas fronteiras dos microservices
Integrando aplicações, o que temos nas fronteiras dos microservicesIntegrando aplicações, o que temos nas fronteiras dos microservices
Integrando aplicações, o que temos nas fronteiras dos microservicesEduardo Cesar
 
Mantendo a plenitude do seu novo legado com code-refactoring
Mantendo a plenitude do seu novo legado com code-refactoringMantendo a plenitude do seu novo legado com code-refactoring
Mantendo a plenitude do seu novo legado com code-refactoringEduardo Cesar
 
Desenvolvendor aplicações real time com PHP
Desenvolvendor aplicações real time com PHPDesenvolvendor aplicações real time com PHP
Desenvolvendor aplicações real time com PHPEduardo Cesar
 
Refatoração e uma vida saudável para o desenvolvedor e para sua aplicação
Refatoração e uma vida saudável para o desenvolvedor e para sua aplicaçãoRefatoração e uma vida saudável para o desenvolvedor e para sua aplicação
Refatoração e uma vida saudável para o desenvolvedor e para sua aplicaçãoEduardo Cesar
 
Explorando mecanismos autenticacao na web
Explorando mecanismos autenticacao na webExplorando mecanismos autenticacao na web
Explorando mecanismos autenticacao na webEduardo Cesar
 
Manipulando JWT em apis Laravel
Manipulando JWT em apis LaravelManipulando JWT em apis Laravel
Manipulando JWT em apis LaravelEduardo Cesar
 
Porque escolhemos Laravel: um ponto de vista além do técnico
Porque escolhemos Laravel: um ponto de vista além do técnicoPorque escolhemos Laravel: um ponto de vista além do técnico
Porque escolhemos Laravel: um ponto de vista além do técnicoEduardo Cesar
 
Do monolito ao microservico
Do monolito ao microservicoDo monolito ao microservico
Do monolito ao microservicoEduardo Cesar
 
Uma abordagem sobre arquiteturas de software Rest e Micro services
Uma abordagem sobre arquiteturas de software Rest e Micro servicesUma abordagem sobre arquiteturas de software Rest e Micro services
Uma abordagem sobre arquiteturas de software Rest e Micro servicesEduardo Cesar
 

Mais de Eduardo Cesar (15)

Vida longa ao legado
Vida longa ao legadoVida longa ao legado
Vida longa ao legado
 
Uma linha tênue entre arquitetura de software e o dia a dia dev
Uma linha tênue entre arquitetura de software e o dia a dia devUma linha tênue entre arquitetura de software e o dia a dia dev
Uma linha tênue entre arquitetura de software e o dia a dia dev
 
OOP, e uma visão que está além de classes e métodos
OOP, e uma visão que está além de classes e métodosOOP, e uma visão que está além de classes e métodos
OOP, e uma visão que está além de classes e métodos
 
Arquitetando aplicações php
Arquitetando aplicações phpArquitetando aplicações php
Arquitetando aplicações php
 
Arquitetando sistemas PHP
Arquitetando sistemas PHPArquitetando sistemas PHP
Arquitetando sistemas PHP
 
Desbabravando linguagem GO
Desbabravando linguagem GODesbabravando linguagem GO
Desbabravando linguagem GO
 
Integrando aplicações, o que temos nas fronteiras dos microservices
Integrando aplicações, o que temos nas fronteiras dos microservicesIntegrando aplicações, o que temos nas fronteiras dos microservices
Integrando aplicações, o que temos nas fronteiras dos microservices
 
Mantendo a plenitude do seu novo legado com code-refactoring
Mantendo a plenitude do seu novo legado com code-refactoringMantendo a plenitude do seu novo legado com code-refactoring
Mantendo a plenitude do seu novo legado com code-refactoring
 
Desenvolvendor aplicações real time com PHP
Desenvolvendor aplicações real time com PHPDesenvolvendor aplicações real time com PHP
Desenvolvendor aplicações real time com PHP
 
Refatoração e uma vida saudável para o desenvolvedor e para sua aplicação
Refatoração e uma vida saudável para o desenvolvedor e para sua aplicaçãoRefatoração e uma vida saudável para o desenvolvedor e para sua aplicação
Refatoração e uma vida saudável para o desenvolvedor e para sua aplicação
 
Explorando mecanismos autenticacao na web
Explorando mecanismos autenticacao na webExplorando mecanismos autenticacao na web
Explorando mecanismos autenticacao na web
 
Manipulando JWT em apis Laravel
Manipulando JWT em apis LaravelManipulando JWT em apis Laravel
Manipulando JWT em apis Laravel
 
Porque escolhemos Laravel: um ponto de vista além do técnico
Porque escolhemos Laravel: um ponto de vista além do técnicoPorque escolhemos Laravel: um ponto de vista além do técnico
Porque escolhemos Laravel: um ponto de vista além do técnico
 
Do monolito ao microservico
Do monolito ao microservicoDo monolito ao microservico
Do monolito ao microservico
 
Uma abordagem sobre arquiteturas de software Rest e Micro services
Uma abordagem sobre arquiteturas de software Rest e Micro servicesUma abordagem sobre arquiteturas de software Rest e Micro services
Uma abordagem sobre arquiteturas de software Rest e Micro services
 

Interagindo com web services RPC, SOAP e REST utilizando PHP