SlideShare uma empresa Scribd logo
Palestra REST JAVA
Paulo José de Carlo Almeida
O SOAP é bastante maduro e bem definido e vem com uma especificação completa.
Já a abordagem REST é apenas isso: uma abordagem.
Por isso ao se encontrar uma das situações abaixo, o SOAP pode ser uma ótima solução:
• Processamento e chamada assíncronos: se o aplicativo precisa de um nível garantido de
confiabilidade e segurança para a troca de mensagens, então o SOAP 1.2 oferece padrões
adicionais para esse tipo de operação como por exemplo o WSRM (WS-Reliable
Messaging).
• Contratos formais: se ambos os lados (fornecedor e consumidor) têm que concordar com o
formato de intercâmbio de dados, então o SOAP 1.2 fornece especificações rígidas para
esse tipo de interação.
• Operações Stateful: para o caso de o aplicativo precisar de informação contextual e
gerenciamento de estado com coordenação e segurança, o SOAP 1.2 possui
uma especificação adicional em sua estrutura que apoia essa necessidade (segurança,
transações, coordenação etc.). Comparativamente, usar o REST exigiria que os
desenvolvedores construíssem uma solução personalizada.
Antes do REST. O SOAP.
Agora sim. REST
 Situações em que há limitação de recursos e de largura de banda: A estrutura
de retorno é em qualquer formato definido pelo desenvolvedor e qualquer
navegador pode ser usado. Isso porque a abordagem REST usa o padrão de
chamadas GET, PUT, POST e DELETE. O REST também pode usar objetos
XMLHttpRequest (a base do velho AJAX) que a maioria dos navegadores
modernos suporta.
 Operações totalmente sem-estado: se uma operação precisa ser continuada, o
REST não será a melhor opção. No entanto, se forem necessárias operações de
CRUD stateless (Criar, Ler, Atualizar e Excluir), o REST seria a melhor
alternativa.
 Situações que exigem cache: se a informação pode ser armazenada em cache,
devido à natureza da operação stateless do REST, esse seria um cenário
adequado para a tecnologia.
RESTful
 RESTful: capacidade de determinado sistema aplicar os princípios de REST.
Curva de Aprendizado Segura
 Para que você possa entender os elementos que irão lhe ajudar a criar seu
produto de software com integração máxima, será necessário conhecer as
terminologias oriundas do meio “Desenvolvimento WEB”
XML
 XML (Extensible Markup Language) é uma recomendação da W3C para
gerar linguagens de marcação para necessidades especiais.[3]
 É um dos subtipos da SGML (acrônimo de Standard Generalized Markup
Language ou Linguagem Padronizada de Marcação Genérica) capaz de
descrever diversos tipos de dados. Seu propósito principal é a facilidade de
compartilhamento de informações por intermédio da internet.
Exemplo XML
HTML (Estrutura)
 O nome HTML é uma abreviação para a
expressão inglesa de HyperText Markup
Language, que significa Linguagem de
Marcação de Hipertexto.
CSS (Embelezamento e Responsividade)
 CSS é a sigla para o termo em inglês
Cascading Style Sheets, que traduzido para
o português significa Folha de Estilo em
Cascatas. O CSS é fácil de aprender e
entender e é facilmente utilizado com as
linguagens de marcação HTML ou XHTML.
JavaScript (Comportamento)
 JavaScript é uma linguagem de programação
interpretada. Foi originalmente implementada
como parte dos navegadores web para que
scripts pudessem ser executados do lado do
cliente e interagissem com o usuário sem a
necessidade deste script passar pelo servidor,
controlando o navegador, realizando
comunicação assíncrona e alterando o
conteúdo do documento exibido.
Jquery (Facilidade)
 Por conta das dificuldades enfrentadas pelos programadores
JavaScript para páginas Web, foi criada uma biblioteca que
traz diversas funcionalidades voltadas à solução dos
problemas mais difíceis de serem contornados com o uso do
JavaScript puro.
 A principal vantagem na adoção de uma biblioteca de
JavaScript é permitir uma maior compatibilidade de um
mesmo código com diversos navegadores. Uma maneira de
se atingir esse objetivo é criando funções que verificam
quaisquer características necessárias e permitam que o
programador escreva um código único para todos os
navegadores.
 Além dessa vantagem, o jQuery, que é hoje a biblioteca
padrão na programação front-end para Web, traz uma
sintaxe mais "fluida" nas tarefas mais comuns ao
programador que são: selecionar um elemento do
documento e alterar suas características.
Ajax (Comunicador)
 Ajax (acrônimo em língua inglesa de Asynchronous Javascript and XML[1], em
português "Javascript Assíncrono e XML") é o uso metodológico de tecnologias
como Javascript e XML, providas por navegadores, para tornar páginas Web
mais interativas com o usuário, utilizando-se de solicitações assíncronas de
informações. Foi inicialmente desenvolvida pelo estudioso Jessé James Garret
e mais tarde por diversas associações. Apesar do nome, a utilização de XML
não é obrigatória (JSON é frequentemente utilizado) e as solicitações também
não necessitam ser assíncronas.
 A XMLHttpRequest tem um papel importante na técnica de desenvolvimento
web Ajax para se comunicar com os scripts do lado do servidor.
JSON (Forma de comunicação)
 JSON (JavaScript Object Notation - Notação de Objetos JavaScript) é uma
formatação leve de troca de dados. Para seres humanos, é fácil de ler e escrever.
Para máquinas, é fácil de interpretar e gerar. Está baseado em um subconjunto
da linguagem de programação JavaScript e Standard ECMA.
 JSON é em formato texto e completamente independente de linguagem, pois usa
convenções que são familiares às linguagens C e familiares, incluindo C++, C#,
Java, JavaScript, Perl, Python e muitas outras. Estas propriedades fazem com que
JSON seja um formato ideal de troca de dados.
 JSON está constituído em duas estruturas:
 Uma coleção de pares nome/valor. Em várias linguagens, isto é caracterizado
como um object, record, struct, dicionário, hash table, keyed list, ou arrays
associativas.
 Uma lista ordenada de valores. Na maioria das linguagens, isto é caracterizado
como uma array, vetor, lista ou sequência.
API
 API é um conjunto de rotinas e padrões de programação para acesso a um aplicativo
de software ou plataforma baseado na Web.
 A sigla API refere-se ao termo em inglês "Application Programming Interface" que
significa em tradução para o português "Interface de Programação de Aplicativos".
 Uma API é criada quando uma empresa de software tem a intenção de que outros
criadores de software desenvolvam produtos associados ao seu serviço.
 Existem vários deles que disponibilizam seus códigos e instruções para serem usados
em outros sites da maneira mais conveniente para seus usuários.
 O Google Maps é um dos grandes exemplos na área de APIs. Por meio de seu código
original, muitos outros sites e aplicações utilizam os dados do Google Maps adaptando-
o da melhor forma a fim de utilizar esse serviço.
Servlet (API)
 A API Java Servlet (do pacote javax.servlet) proporciona ao desenvolvedor a
possibilidade de adicionar conteúdo dinâmico em um servidor web usando a plataforma
Java.
 Esta tecnologia disponibiliza ao programador da linguagem Java uma interface para o
servidor web (ou servidor de aplicação), através de uma API. As aplicações baseadas no
Servlet geram conteúdo dinâmico (normalmente HTML) e interagem com os clientes,
utilizando o modelo requisição-resposta.
 Os servlets normalmente utilizam o protocolo HTTP, apesar de não serem restritos a
ele. Um Servlet necessita de um container Web para ser executado.
 Eles são frequentemente usados para:
 Processar ou armazenar dados que foram submetidos de um formulário HTML
 Fornecer conteúdo dinâmico, como os resultados de uma consulta a um banco de dados
 Gerenciar a informação de estado que não existe no protocolo sem estado HTTP, como
inserir/retirar os itens de uma cesta de compras de um cliente específico
Arquitetura
Exemplo
 Em seu sistema de vendas on-line, por exemplo, como ajudar o cliente a
preencher o nome da rua, bairro e estado?
 Seria prudente ter uma base de dados do correios?
 O problema não é o tamanho da base, e sim a manutenção, pois a todo momento
nascem novos CEPs.
 Para nos ajudar, podemos usar uma API REST do viacep.com.br
Arquivo cadpessoa.html
Arquivo buscacep.js
Testando Direto com a URI
Em nossa aplicação
Neste caso só foi utilizado o nome da rua, mas poderíamos adicionar
mais campos em nossa aplicação.
Vamos criar a nossa API...
Modelando
Modelando
Servlet (Servindo)
Jquery (Usando o Ajax)
Resultado
Mas isso pode ser considerado REST ou
RESTful?
 Para que possamos responder essa questão, precisamos entender:
 Os verbos do REST
 GET  Para Consultar dados
 POST  Para Inserir dados
 PUT  Para Alterar dados (Alteração afetando todos os atributos da classe)
 DELETE  Para Excluir dados
 PATCH  Para Alterar parcialmente (Alteração afetando alguns atributos)
 OPTIONS  Para saber quais os métodos (verbos) permitidos
 HEAD  Somente traz o cabeçalho da requisição
Como seria o código em Java de um
WEBSERVICE (API RESTful) (Jersey)
Resultado
Cadastrando Usuário...
Enquanto isso do outro lado do mundo
alguém quer cadastrar um “Cliente”...
Mas...E se a gente quiser alterar o
“Cliente” cadastrado?
E na API...
E se fosse é C#
E na API
Não gosto do Java...
 Em PHP você pode pesquisar por:
 https://www.phpflow.com/php/create-php-restful-api-without-rest-framework-
dependency/
 https://www.phpflow.com/php/restful-api-frameworks-for-php/Em .NET
 Em .NET
 https://docs.microsoft.com/pt-br/aspnet/core/tutorials/first-web-
api?view=aspnetcore-2.1
 Em Node
 https://medium.com/mackmobile/criando-um-web-service-restful-usando-node-js-
7c00d8f16a4a
 Em Python
 https://www.fullstackpython.com/api-creation.html
O que é mais importante que a API REST
funcionar?
 Documentar a API
 Informar as URIs
 Informar os Métodos
 Informar a Versão
 Informar os Tipos de Resposta
 Ou seja, dar Informações suficientes para que o programador possa integrar
com facilidade sua aplicação junta a API.
MAPS
FACEBOOK
Obrigado!

Mais conteúdo relacionado

Mais procurados

Psdc - 2014/01
Psdc - 2014/01Psdc - 2014/01
Psdc - 2014/01
Isa Prati
 
Apostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e PrimefacesApostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e Primefaces
Rosicleia Frasson
 
Artigo de Protótipo de Sistema de Gerenciamento de Rotas para Transporte Cole...
Artigo de Protótipo de Sistema de Gerenciamento de Rotas para Transporte Cole...Artigo de Protótipo de Sistema de Gerenciamento de Rotas para Transporte Cole...
Artigo de Protótipo de Sistema de Gerenciamento de Rotas para Transporte Cole...
Alessandro Marchi Panaccione
 
Serviços na Plataforma .NET (SOA, REST, Microservices, WCF, Web API)
Serviços na Plataforma .NET (SOA, REST, Microservices, WCF, Web API)Serviços na Plataforma .NET (SOA, REST, Microservices, WCF, Web API)
Serviços na Plataforma .NET (SOA, REST, Microservices, WCF, Web API)
Renato Groff
 
Java Web 1 Introducao
Java Web 1 IntroducaoJava Web 1 Introducao
Java Web 1 Introducao
Eduardo Mendes
 
Java wsdp
Java wsdpJava wsdp
201406Carvalho
201406Carvalho201406Carvalho
201406Carvalho
Afonso Pra
 
Dicas e truques sobre performance em JavaEE, JPA e JSF
Dicas e truques sobre performance em JavaEE, JPA e JSFDicas e truques sobre performance em JavaEE, JPA e JSF
Dicas e truques sobre performance em JavaEE, JPA e JSF
Dr. Spock
 
Java Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsJava Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e Servlets
Eduardo Mendes
 
Web Sphere
Web SphereWeb Sphere
Web Sphere
Fabricio Carvalho
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
jornaljava
 
Fundamentos do asp.net
Fundamentos do asp.netFundamentos do asp.net
Fundamentos do asp.net
leojr_0
 
Rest In Peace com JBOSS RESTEasy
Rest In Peace com JBOSS RESTEasyRest In Peace com JBOSS RESTEasy
Rest In Peace com JBOSS RESTEasy
Arthur Cesar Oreana
 
Arquitetura orientada a serviços (SOA)
Arquitetura orientada a serviços (SOA)Arquitetura orientada a serviços (SOA)
Arquitetura orientada a serviços (SOA)
Helio Henrique L. C. Monte-Alto
 
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrõesMC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
Rodrigo Cândido da Silva
 
Webservices
WebservicesWebservices
Webservices
Adler Medrado
 
Curso Java (Parte 8) Web Service REST
Curso Java (Parte 8) Web Service RESTCurso Java (Parte 8) Web Service REST
Curso Java (Parte 8) Web Service REST
Mario Sergio
 
Introdução ao Desenvolvimento de aplicações WEB com JSP
Introdução ao Desenvolvimento de aplicações WEB com JSPIntrodução ao Desenvolvimento de aplicações WEB com JSP
Introdução ao Desenvolvimento de aplicações WEB com JSP
Manoel Afonso
 
CURSO DELPHI FUND. CLIENT SERVER (DIURNO)
CURSO DELPHI FUND. CLIENT SERVER (DIURNO) CURSO DELPHI FUND. CLIENT SERVER (DIURNO)
CURSO DELPHI FUND. CLIENT SERVER (DIURNO)
Grupo Treinar
 
Desenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsDesenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e Servlets
Igo Coelho
 

Mais procurados (20)

Psdc - 2014/01
Psdc - 2014/01Psdc - 2014/01
Psdc - 2014/01
 
Apostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e PrimefacesApostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e Primefaces
 
Artigo de Protótipo de Sistema de Gerenciamento de Rotas para Transporte Cole...
Artigo de Protótipo de Sistema de Gerenciamento de Rotas para Transporte Cole...Artigo de Protótipo de Sistema de Gerenciamento de Rotas para Transporte Cole...
Artigo de Protótipo de Sistema de Gerenciamento de Rotas para Transporte Cole...
 
Serviços na Plataforma .NET (SOA, REST, Microservices, WCF, Web API)
Serviços na Plataforma .NET (SOA, REST, Microservices, WCF, Web API)Serviços na Plataforma .NET (SOA, REST, Microservices, WCF, Web API)
Serviços na Plataforma .NET (SOA, REST, Microservices, WCF, Web API)
 
Java Web 1 Introducao
Java Web 1 IntroducaoJava Web 1 Introducao
Java Web 1 Introducao
 
Java wsdp
Java wsdpJava wsdp
Java wsdp
 
201406Carvalho
201406Carvalho201406Carvalho
201406Carvalho
 
Dicas e truques sobre performance em JavaEE, JPA e JSF
Dicas e truques sobre performance em JavaEE, JPA e JSFDicas e truques sobre performance em JavaEE, JPA e JSF
Dicas e truques sobre performance em JavaEE, JPA e JSF
 
Java Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsJava Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e Servlets
 
Web Sphere
Web SphereWeb Sphere
Web Sphere
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
 
Fundamentos do asp.net
Fundamentos do asp.netFundamentos do asp.net
Fundamentos do asp.net
 
Rest In Peace com JBOSS RESTEasy
Rest In Peace com JBOSS RESTEasyRest In Peace com JBOSS RESTEasy
Rest In Peace com JBOSS RESTEasy
 
Arquitetura orientada a serviços (SOA)
Arquitetura orientada a serviços (SOA)Arquitetura orientada a serviços (SOA)
Arquitetura orientada a serviços (SOA)
 
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrõesMC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
 
Webservices
WebservicesWebservices
Webservices
 
Curso Java (Parte 8) Web Service REST
Curso Java (Parte 8) Web Service RESTCurso Java (Parte 8) Web Service REST
Curso Java (Parte 8) Web Service REST
 
Introdução ao Desenvolvimento de aplicações WEB com JSP
Introdução ao Desenvolvimento de aplicações WEB com JSPIntrodução ao Desenvolvimento de aplicações WEB com JSP
Introdução ao Desenvolvimento de aplicações WEB com JSP
 
CURSO DELPHI FUND. CLIENT SERVER (DIURNO)
CURSO DELPHI FUND. CLIENT SERVER (DIURNO) CURSO DELPHI FUND. CLIENT SERVER (DIURNO)
CURSO DELPHI FUND. CLIENT SERVER (DIURNO)
 
Desenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsDesenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e Servlets
 

Semelhante a Palestra Sobre REST

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
Luan Felipe Knebel
 
teste86940.78038637294
teste86940.78038637294teste86940.78038637294
teste86940.78038637294
Sávio Carvalho
 
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
Heider 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 SISTEMAS
Heider Lopes
 
Web Sphere Application Server
Web Sphere Application ServerWeb Sphere Application Server
Web Sphere Application Server
Fabricio Carvalho
 
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
BrunoAlbuquerque864673
 
Apache e Java
Apache e JavaApache e Java
Apache e Java
Glaucio Scheibel
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev Introdução
Marcio Marinho
 
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
BrunoAlbuquerque864673
 
JSP - Java Serves Pages
JSP - Java Serves PagesJSP - Java Serves Pages
JSP - Java Serves Pages
Amanda Luz
 
Tecnologia web aula 03
Tecnologia web  aula 03Tecnologia web  aula 03
Tecnologia web aula 03
Manuel Ernesto
 
Projeto VI: Tecnologias Básicas da Web 2 0
Projeto VI: Tecnologias Básicas da Web 2 0Projeto VI: Tecnologias Básicas da Web 2 0
Projeto VI: Tecnologias Básicas da Web 2 0
igorpsoares
 
Web Services
Web ServicesWeb Services
Web Services
Paulo Neto
 
Web Service - XML
Web Service - XMLWeb Service - XML
Web Service - XML
blogspheregroup
 
WebServices-XML
WebServices-XMLWebServices-XML
WebServices-XML
blogspheregroup
 
Introdução à Servlets e JSP
Introdução à Servlets e JSPIntrodução à Servlets e JSP
Introdução à Servlets e JSP
ledsifes
 
Web Services - Grupo F
Web Services - Grupo FWeb Services - Grupo F
Web Services - Grupo F
mdmansur
 
Android + web service
Android + web serviceAndroid + web service
Android + web service
Ruddá Beltrão
 
Introdução ASP.NET Core
Introdução ASP.NET CoreIntrodução ASP.NET Core
Introdução ASP.NET Core
lacerda2
 
Testes webservice tdc
Testes webservice tdcTestes webservice tdc
Testes webservice tdc
Ricardo Moura
 

Semelhante a Palestra Sobre REST (20)

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
 
teste86940.78038637294
teste86940.78038637294teste86940.78038637294
teste86940.78038637294
 
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
 
Web Sphere Application Server
Web Sphere Application ServerWeb Sphere Application Server
Web Sphere Application Server
 
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
 
Apache e Java
Apache e JavaApache e Java
Apache e Java
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev Introdução
 
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
 
JSP - Java Serves Pages
JSP - Java Serves PagesJSP - Java Serves Pages
JSP - Java Serves Pages
 
Tecnologia web aula 03
Tecnologia web  aula 03Tecnologia web  aula 03
Tecnologia web aula 03
 
Projeto VI: Tecnologias Básicas da Web 2 0
Projeto VI: Tecnologias Básicas da Web 2 0Projeto VI: Tecnologias Básicas da Web 2 0
Projeto VI: Tecnologias Básicas da Web 2 0
 
Web Services
Web ServicesWeb Services
Web Services
 
Web Service - XML
Web Service - XMLWeb Service - XML
Web Service - XML
 
WebServices-XML
WebServices-XMLWebServices-XML
WebServices-XML
 
Introdução à Servlets e JSP
Introdução à Servlets e JSPIntrodução à Servlets e JSP
Introdução à Servlets e JSP
 
Web Services - Grupo F
Web Services - Grupo FWeb Services - Grupo F
Web Services - Grupo F
 
Android + web service
Android + web serviceAndroid + web service
Android + web service
 
Introdução ASP.NET Core
Introdução ASP.NET CoreIntrodução ASP.NET Core
Introdução ASP.NET Core
 
Testes webservice tdc
Testes webservice tdcTestes webservice tdc
Testes webservice tdc
 

Palestra Sobre REST

  • 1. Palestra REST JAVA Paulo José de Carlo Almeida
  • 2. O SOAP é bastante maduro e bem definido e vem com uma especificação completa. Já a abordagem REST é apenas isso: uma abordagem. Por isso ao se encontrar uma das situações abaixo, o SOAP pode ser uma ótima solução: • Processamento e chamada assíncronos: se o aplicativo precisa de um nível garantido de confiabilidade e segurança para a troca de mensagens, então o SOAP 1.2 oferece padrões adicionais para esse tipo de operação como por exemplo o WSRM (WS-Reliable Messaging). • Contratos formais: se ambos os lados (fornecedor e consumidor) têm que concordar com o formato de intercâmbio de dados, então o SOAP 1.2 fornece especificações rígidas para esse tipo de interação. • Operações Stateful: para o caso de o aplicativo precisar de informação contextual e gerenciamento de estado com coordenação e segurança, o SOAP 1.2 possui uma especificação adicional em sua estrutura que apoia essa necessidade (segurança, transações, coordenação etc.). Comparativamente, usar o REST exigiria que os desenvolvedores construíssem uma solução personalizada. Antes do REST. O SOAP.
  • 3. Agora sim. REST  Situações em que há limitação de recursos e de largura de banda: A estrutura de retorno é em qualquer formato definido pelo desenvolvedor e qualquer navegador pode ser usado. Isso porque a abordagem REST usa o padrão de chamadas GET, PUT, POST e DELETE. O REST também pode usar objetos XMLHttpRequest (a base do velho AJAX) que a maioria dos navegadores modernos suporta.  Operações totalmente sem-estado: se uma operação precisa ser continuada, o REST não será a melhor opção. No entanto, se forem necessárias operações de CRUD stateless (Criar, Ler, Atualizar e Excluir), o REST seria a melhor alternativa.  Situações que exigem cache: se a informação pode ser armazenada em cache, devido à natureza da operação stateless do REST, esse seria um cenário adequado para a tecnologia.
  • 4. RESTful  RESTful: capacidade de determinado sistema aplicar os princípios de REST.
  • 5. Curva de Aprendizado Segura  Para que você possa entender os elementos que irão lhe ajudar a criar seu produto de software com integração máxima, será necessário conhecer as terminologias oriundas do meio “Desenvolvimento WEB”
  • 6. XML  XML (Extensible Markup Language) é uma recomendação da W3C para gerar linguagens de marcação para necessidades especiais.[3]  É um dos subtipos da SGML (acrônimo de Standard Generalized Markup Language ou Linguagem Padronizada de Marcação Genérica) capaz de descrever diversos tipos de dados. Seu propósito principal é a facilidade de compartilhamento de informações por intermédio da internet.
  • 8. HTML (Estrutura)  O nome HTML é uma abreviação para a expressão inglesa de HyperText Markup Language, que significa Linguagem de Marcação de Hipertexto.
  • 9. CSS (Embelezamento e Responsividade)  CSS é a sigla para o termo em inglês Cascading Style Sheets, que traduzido para o português significa Folha de Estilo em Cascatas. O CSS é fácil de aprender e entender e é facilmente utilizado com as linguagens de marcação HTML ou XHTML.
  • 10. JavaScript (Comportamento)  JavaScript é uma linguagem de programação interpretada. Foi originalmente implementada como parte dos navegadores web para que scripts pudessem ser executados do lado do cliente e interagissem com o usuário sem a necessidade deste script passar pelo servidor, controlando o navegador, realizando comunicação assíncrona e alterando o conteúdo do documento exibido.
  • 11. Jquery (Facilidade)  Por conta das dificuldades enfrentadas pelos programadores JavaScript para páginas Web, foi criada uma biblioteca que traz diversas funcionalidades voltadas à solução dos problemas mais difíceis de serem contornados com o uso do JavaScript puro.  A principal vantagem na adoção de uma biblioteca de JavaScript é permitir uma maior compatibilidade de um mesmo código com diversos navegadores. Uma maneira de se atingir esse objetivo é criando funções que verificam quaisquer características necessárias e permitam que o programador escreva um código único para todos os navegadores.  Além dessa vantagem, o jQuery, que é hoje a biblioteca padrão na programação front-end para Web, traz uma sintaxe mais "fluida" nas tarefas mais comuns ao programador que são: selecionar um elemento do documento e alterar suas características.
  • 12. Ajax (Comunicador)  Ajax (acrônimo em língua inglesa de Asynchronous Javascript and XML[1], em português "Javascript Assíncrono e XML") é o uso metodológico de tecnologias como Javascript e XML, providas por navegadores, para tornar páginas Web mais interativas com o usuário, utilizando-se de solicitações assíncronas de informações. Foi inicialmente desenvolvida pelo estudioso Jessé James Garret e mais tarde por diversas associações. Apesar do nome, a utilização de XML não é obrigatória (JSON é frequentemente utilizado) e as solicitações também não necessitam ser assíncronas.  A XMLHttpRequest tem um papel importante na técnica de desenvolvimento web Ajax para se comunicar com os scripts do lado do servidor.
  • 13. JSON (Forma de comunicação)  JSON (JavaScript Object Notation - Notação de Objetos JavaScript) é uma formatação leve de troca de dados. Para seres humanos, é fácil de ler e escrever. Para máquinas, é fácil de interpretar e gerar. Está baseado em um subconjunto da linguagem de programação JavaScript e Standard ECMA.  JSON é em formato texto e completamente independente de linguagem, pois usa convenções que são familiares às linguagens C e familiares, incluindo C++, C#, Java, JavaScript, Perl, Python e muitas outras. Estas propriedades fazem com que JSON seja um formato ideal de troca de dados.  JSON está constituído em duas estruturas:  Uma coleção de pares nome/valor. Em várias linguagens, isto é caracterizado como um object, record, struct, dicionário, hash table, keyed list, ou arrays associativas.  Uma lista ordenada de valores. Na maioria das linguagens, isto é caracterizado como uma array, vetor, lista ou sequência.
  • 14. API  API é um conjunto de rotinas e padrões de programação para acesso a um aplicativo de software ou plataforma baseado na Web.  A sigla API refere-se ao termo em inglês "Application Programming Interface" que significa em tradução para o português "Interface de Programação de Aplicativos".  Uma API é criada quando uma empresa de software tem a intenção de que outros criadores de software desenvolvam produtos associados ao seu serviço.  Existem vários deles que disponibilizam seus códigos e instruções para serem usados em outros sites da maneira mais conveniente para seus usuários.  O Google Maps é um dos grandes exemplos na área de APIs. Por meio de seu código original, muitos outros sites e aplicações utilizam os dados do Google Maps adaptando- o da melhor forma a fim de utilizar esse serviço.
  • 15. Servlet (API)  A API Java Servlet (do pacote javax.servlet) proporciona ao desenvolvedor a possibilidade de adicionar conteúdo dinâmico em um servidor web usando a plataforma Java.  Esta tecnologia disponibiliza ao programador da linguagem Java uma interface para o servidor web (ou servidor de aplicação), através de uma API. As aplicações baseadas no Servlet geram conteúdo dinâmico (normalmente HTML) e interagem com os clientes, utilizando o modelo requisição-resposta.  Os servlets normalmente utilizam o protocolo HTTP, apesar de não serem restritos a ele. Um Servlet necessita de um container Web para ser executado.  Eles são frequentemente usados para:  Processar ou armazenar dados que foram submetidos de um formulário HTML  Fornecer conteúdo dinâmico, como os resultados de uma consulta a um banco de dados  Gerenciar a informação de estado que não existe no protocolo sem estado HTTP, como inserir/retirar os itens de uma cesta de compras de um cliente específico
  • 17. Exemplo  Em seu sistema de vendas on-line, por exemplo, como ajudar o cliente a preencher o nome da rua, bairro e estado?  Seria prudente ter uma base de dados do correios?  O problema não é o tamanho da base, e sim a manutenção, pois a todo momento nascem novos CEPs.  Para nos ajudar, podemos usar uma API REST do viacep.com.br
  • 21. Em nossa aplicação Neste caso só foi utilizado o nome da rua, mas poderíamos adicionar mais campos em nossa aplicação.
  • 22. Vamos criar a nossa API...
  • 28. Mas isso pode ser considerado REST ou RESTful?  Para que possamos responder essa questão, precisamos entender:  Os verbos do REST  GET  Para Consultar dados  POST  Para Inserir dados  PUT  Para Alterar dados (Alteração afetando todos os atributos da classe)  DELETE  Para Excluir dados  PATCH  Para Alterar parcialmente (Alteração afetando alguns atributos)  OPTIONS  Para saber quais os métodos (verbos) permitidos  HEAD  Somente traz o cabeçalho da requisição
  • 29. Como seria o código em Java de um WEBSERVICE (API RESTful) (Jersey)
  • 32. Enquanto isso do outro lado do mundo alguém quer cadastrar um “Cliente”...
  • 33. Mas...E se a gente quiser alterar o “Cliente” cadastrado?
  • 35. E se fosse é C#
  • 37. Não gosto do Java...  Em PHP você pode pesquisar por:  https://www.phpflow.com/php/create-php-restful-api-without-rest-framework- dependency/  https://www.phpflow.com/php/restful-api-frameworks-for-php/Em .NET  Em .NET  https://docs.microsoft.com/pt-br/aspnet/core/tutorials/first-web- api?view=aspnetcore-2.1  Em Node  https://medium.com/mackmobile/criando-um-web-service-restful-usando-node-js- 7c00d8f16a4a  Em Python  https://www.fullstackpython.com/api-creation.html
  • 38. O que é mais importante que a API REST funcionar?  Documentar a API  Informar as URIs  Informar os Métodos  Informar a Versão  Informar os Tipos de Resposta  Ou seja, dar Informações suficientes para que o programador possa integrar com facilidade sua aplicação junta a API.
  • 39. MAPS