SlideShare uma empresa Scribd logo
1 de 40
Web APIs
EvaldoBarbosa
Analista de Sistemas
Presidente do PHP Maranhão
Membro da diretoria da ABRAPHP
SOAP: Protocolo baseado em XML,
geralmente utilizado por aplicações em
Java.
RESTFul: Aplicações geralmente baseadas
em JSON e utilizada por diversas
linguagens.
SOAP x RESTful
Representational State Transfer
(REST)
Client-server
Stateless
Uniform interface
Cache (client cache, server cache)
Por volta de 2000, por Roy Fielding como
tese de doutorado.
Época em que, com a colaboração dos
colegas, estava escrevendo as
especificaçoes do HTTP 1.1.
Origem do REST
Quem usa isso?
Quem usa isso?
Todo e qualquer aparelho que consiga
trafegar pelo protocolo HTTP.
Serve para...
Acelerar parcerias
Simplificar integração mobile-cloud
Impulsionar a inovação aberta
Integrar aplicações de software
Criar novos negócios
Como funciona
Como funciona
Uso dos verbos HTTP
(GET, POST, PUT, DELETE)
Verbos HTTP “imitam” o CRUD
URL
http://api.seudomi.nio/nome_da_api/recurso
URI (recursos)
/owners
/owners/1234/dogs
/dogs/222/owner
URI (recursos)
Recursos são coisas, tem nomes
específicos, mesmo que possam ser
tratados como abstrações.
Usar sempre substantivos para os recursos.
Padrão
/recurso/identificador/subrecurso
Filtragem de dados
Use query string
/dogs?
color=red&state=running&location=park
Resposta parcial
Trazer somente alguns campos
/dogs?fields=color,state,location
[delimitado por vírgula]
Resposta parcial
Paginação
/owners/1234/dogs?limit=25&offset=50
(recomendado)
/owners/1234/dogs?start=50&count=25
Busca
Global
/search?q=John+Smith
Por recurso
/owners/1234/dogs?q=pluto
Modelo de Maturidade de Richardson
RMM
RMM
Nivel 0: nada implementado
Nivel 1: uso de recursos
Nivel 2: uso dos verbos HTTP corretamente
Nivel 3: Hipermídia
Respostas
O uso dos verbos aliado ao bom uso das
respostas do protocolo HTTP deixam a API
mais poderosa.
Respostas
- Tudo que envolva sucesso (HTTP 200)
- O que a aplicação diz que é erro : erro
do cliente (HTTP 400)
- Erros do servidor (HTTP 500)
Respostas
Exceções devem ser representadas pelos
códigos de erro corretos;
A mensagem de erro deve ser explicativa;
Respostas
Recomenda-se o uso de um código
específico para cada erro da aplicação;
Em desenvolvimento é recomendável
retornar link para a documentação.
Exemplo
{
"developerMessage" : "Mensagem bem
explicativa.",
"userMessage":"Mensagem de erro simples.",
"errorCode" : 12345,
"more info":
"http://dev.teachdogrest.com/errors/12345"
}
Media Types
Request
Accept: application/json
Response
Content-type: application/json
Versionamento
Versão explícita na URI
/v1/dogs/1234/owner
Recomenda-se manter até duas versões de
uma API.
A versão anterior deve ser
mantida por cerca de 6 meses.
Segurança
Autenticação por token
(geralmente oauth2)
Documentação
Dependendo do tamanho da API ou da
quantidade de usuários que ela tenha,
passa a ser interessante ter um site
especializado nela.
Documentação
descrição dos endpoints
(parametros de entrada e saida)
exemplos de código
páginas introdutórias
como credenciar aplicações e gerar tokens
Documentação
descrição dos endpoints
(parametros de entrada e saida)
exemplos de código
páginas introdutórias
como credenciar aplicações e gerar tokens
Documentação
acesso ao suporte
Fórum
Sandbox
self-service signup
(autocredenciamento de apis abertas)
Obrigado
Perguntas?
WWW.EVALDOBARBOSA.COM.BR
br.linkedin.com/in/evaldobarbosa
github.com/evaldobarbosa
twitter.com/evaldobarbosa

Mais conteúdo relacionado

Mais procurados

uMov.me API - Do básico ao avançado
uMov.me API - Do básico ao avançadouMov.me API - Do básico ao avançado
uMov.me API - Do básico ao avançadoEduardo Bohrer
 
Soa x microservices e versionamento de contrato de API
Soa x microservices e versionamento de contrato de APISoa x microservices e versionamento de contrato de API
Soa x microservices e versionamento de contrato de APIDanielChristofolli
 
Introdução ASP.NET Core
Introdução ASP.NET CoreIntrodução ASP.NET Core
Introdução ASP.NET Corelacerda2
 
Api best practices - SOAP vs REST
Api best practices - SOAP vs RESTApi best practices - SOAP vs REST
Api best practices - SOAP vs RESTDanielChristofolli
 
Como Fazer Apps Node.Js Seguras
Como Fazer Apps Node.Js SegurasComo Fazer Apps Node.Js Seguras
Como Fazer Apps Node.Js SegurasPaulo Pires
 
ColdFusion - O que há e o que está por vir?
ColdFusion - O que há e o que está por vir?ColdFusion - O que há e o que está por vir?
ColdFusion - O que há e o que está por vir?Felipe Magalhães
 
Dicas para migrar sua aplicação ASP.NET para ASP.NET Core 2.x
Dicas para migrar sua aplicação ASP.NET para ASP.NET Core 2.xDicas para migrar sua aplicação ASP.NET para ASP.NET Core 2.x
Dicas para migrar sua aplicação ASP.NET para ASP.NET Core 2.xRodrigo Kono
 

Mais procurados (10)

Enterprise php
Enterprise phpEnterprise php
Enterprise php
 
APIs REST escaláveis
APIs REST escaláveisAPIs REST escaláveis
APIs REST escaláveis
 
uMov.me API - Do básico ao avançado
uMov.me API - Do básico ao avançadouMov.me API - Do básico ao avançado
uMov.me API - Do básico ao avançado
 
Soa x microservices e versionamento de contrato de API
Soa x microservices e versionamento de contrato de APISoa x microservices e versionamento de contrato de API
Soa x microservices e versionamento de contrato de API
 
Criando uma api RESTful para android
Criando uma api RESTful para androidCriando uma api RESTful para android
Criando uma api RESTful para android
 
Introdução ASP.NET Core
Introdução ASP.NET CoreIntrodução ASP.NET Core
Introdução ASP.NET Core
 
Api best practices - SOAP vs REST
Api best practices - SOAP vs RESTApi best practices - SOAP vs REST
Api best practices - SOAP vs REST
 
Como Fazer Apps Node.Js Seguras
Como Fazer Apps Node.Js SegurasComo Fazer Apps Node.Js Seguras
Como Fazer Apps Node.Js Seguras
 
ColdFusion - O que há e o que está por vir?
ColdFusion - O que há e o que está por vir?ColdFusion - O que há e o que está por vir?
ColdFusion - O que há e o que está por vir?
 
Dicas para migrar sua aplicação ASP.NET para ASP.NET Core 2.x
Dicas para migrar sua aplicação ASP.NET para ASP.NET Core 2.xDicas para migrar sua aplicação ASP.NET para ASP.NET Core 2.x
Dicas para migrar sua aplicação ASP.NET para ASP.NET Core 2.x
 

Semelhante a Web APIs: RESTful vs SOAP

Deck apix 2017 design & security - case cielo lio
Deck apix 2017   design & security - case cielo lioDeck apix 2017   design & security - case cielo lio
Deck apix 2017 design & security - case cielo lioLuis Moraes Junior
 
WCPOA2019 - WordPress como um backend de seus aplicativos
WCPOA2019  - WordPress como um backend de seus aplicativosWCPOA2019  - WordPress como um backend de seus aplicativos
WCPOA2019 - WordPress como um backend de seus aplicativosJackson F. de A. Mafra
 
WordPress como um backend de seus aplicativos
WordPress como um backend de seus aplicativosWordPress como um backend de seus aplicativos
WordPress como um backend de seus aplicativosJackson F. de A. Mafra
 
Workshop do Bem: O mundo das APIs
Workshop do Bem: O mundo das APIsWorkshop do Bem: O mundo das APIs
Workshop do Bem: O mundo das APIsHeider Lopes
 
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMAS
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMASO MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMAS
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMASHeider Lopes
 
Introdução ao ASP .NET Web API
Introdução ao ASP .NET Web APIIntrodução ao ASP .NET Web API
Introdução ao ASP .NET Web APIVinicius Mussak
 
Desenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EEDesenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EELuan Felipe Knebel
 
Web 2.0 e RIA com PHP
Web 2.0 e RIA com PHPWeb 2.0 e RIA com PHP
Web 2.0 e RIA com PHPAdler Medrado
 
Ebook Apache Server: Guia Introdutório
Ebook Apache Server: Guia IntrodutórioEbook Apache Server: Guia Introdutório
Ebook Apache Server: Guia IntrodutórioFernando Palma
 
4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdf4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdfRubenManhia
 
Monitoramento de Aplicações Web Modernas com Zabbix
Monitoramento de Aplicações Web Modernas com ZabbixMonitoramento de Aplicações Web Modernas com Zabbix
Monitoramento de Aplicações Web Modernas com ZabbixAndré Déo
 
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
 
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
 
Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0jesuinoPower
 

Semelhante a Web APIs: RESTful vs SOAP (20)

Deck apix 2017 design & security - case cielo lio
Deck apix 2017   design & security - case cielo lioDeck apix 2017   design & security - case cielo lio
Deck apix 2017 design & security - case cielo lio
 
WCPOA2019 - WordPress como um backend de seus aplicativos
WCPOA2019  - WordPress como um backend de seus aplicativosWCPOA2019  - WordPress como um backend de seus aplicativos
WCPOA2019 - WordPress como um backend de seus aplicativos
 
WordPress como um backend de seus aplicativos
WordPress como um backend de seus aplicativosWordPress como um backend de seus aplicativos
WordPress como um backend de seus aplicativos
 
Workshop do Bem: O mundo das APIs
Workshop do Bem: O mundo das APIsWorkshop do Bem: O mundo das APIs
Workshop do Bem: O mundo das APIs
 
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMAS
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMASO MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMAS
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMAS
 
Introdução ao ASP .NET Web API
Introdução ao ASP .NET Web APIIntrodução ao ASP .NET Web API
Introdução ao ASP .NET Web API
 
Desenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EEDesenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EE
 
REST com Python
REST com PythonREST com Python
REST com Python
 
Web service
Web serviceWeb service
Web service
 
Web 2.0 e RIA com PHP
Web 2.0 e RIA com PHPWeb 2.0 e RIA com PHP
Web 2.0 e RIA com PHP
 
Ebook Apache Server: Guia Introdutório
Ebook Apache Server: Guia IntrodutórioEbook Apache Server: Guia Introdutório
Ebook Apache Server: Guia Introdutório
 
Web Sphere
Web SphereWeb Sphere
Web Sphere
 
4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdf4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdf
 
Monitoramento de Aplicações Web Modernas com Zabbix
Monitoramento de Aplicações Web Modernas com ZabbixMonitoramento de Aplicações Web Modernas com Zabbix
Monitoramento de Aplicações Web Modernas com Zabbix
 
A Linguagem Php
A Linguagem PhpA Linguagem Php
A Linguagem Php
 
Palestra Sobre REST
Palestra Sobre RESTPalestra Sobre REST
Palestra Sobre REST
 
WordPress + REST API
WordPress + REST APIWordPress + REST API
WordPress + REST API
 
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
 
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
 
Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0
 

Mais de Evaldo Barbosa

A partir de hoje #soudev
A partir de hoje #soudevA partir de hoje #soudev
A partir de hoje #soudevEvaldo Barbosa
 
Como ser mais produtivo?
Como ser mais produtivo?Como ser mais produtivo?
Como ser mais produtivo?Evaldo Barbosa
 
Testes unitários com PHPUnit
Testes unitários com PHPUnitTestes unitários com PHPUnit
Testes unitários com PHPUnitEvaldo Barbosa
 
Estendendo o html com angular js
Estendendo o html com angular jsEstendendo o html com angular js
Estendendo o html com angular jsEvaldo Barbosa
 
Dicas de orientação a objetos
Dicas de orientação a objetosDicas de orientação a objetos
Dicas de orientação a objetosEvaldo Barbosa
 
Montagem de equipes de software
Montagem de equipes de softwareMontagem de equipes de software
Montagem de equipes de softwareEvaldo Barbosa
 

Mais de Evaldo Barbosa (11)

Polymer Starter Kit
Polymer Starter KitPolymer Starter Kit
Polymer Starter Kit
 
A partir de hoje #soudev
A partir de hoje #soudevA partir de hoje #soudev
A partir de hoje #soudev
 
Como ser mais produtivo?
Como ser mais produtivo?Como ser mais produtivo?
Como ser mais produtivo?
 
Testes unitários com PHPUnit
Testes unitários com PHPUnitTestes unitários com PHPUnit
Testes unitários com PHPUnit
 
Estendendo o html com angular js
Estendendo o html com angular jsEstendendo o html com angular js
Estendendo o html com angular js
 
Web components
Web componentsWeb components
Web components
 
Dicas de orientação a objetos
Dicas de orientação a objetosDicas de orientação a objetos
Dicas de orientação a objetos
 
Montagem de equipes de software
Montagem de equipes de softwareMontagem de equipes de software
Montagem de equipes de software
 
Angular js 4php
Angular js   4phpAngular js   4php
Angular js 4php
 
Phpub #8 websockets
Phpub #8   websocketsPhpub #8   websockets
Phpub #8 websockets
 
Divulgação 4.php
Divulgação 4.phpDivulgação 4.php
Divulgação 4.php
 

Web APIs: RESTful vs SOAP