0% acharam este documento útil (0 voto)
45 visualizações34 páginas

PPI Modulo11 Intro Web Services

O documento apresenta uma introdução aos serviços web e ao desenvolvimento de aplicações web com Java. Ele define o que são serviços web, dando exemplos, e discute seus benefícios, incluindo interoperabilidade e reusabilidade. Também descreve os principais tipos de serviços web, SOAP e REST, comparando suas características, e explica conceitos importantes como idempotência e os principais métodos HTTP usados em serviços RESTful.

Enviado por

ana
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
45 visualizações34 páginas

PPI Modulo11 Intro Web Services

O documento apresenta uma introdução aos serviços web e ao desenvolvimento de aplicações web com Java. Ele define o que são serviços web, dando exemplos, e discute seus benefícios, incluindo interoperabilidade e reusabilidade. Também descreve os principais tipos de serviços web, SOAP e REST, comparando suas características, e explica conceitos importantes como idempotência e os principais métodos HTTP usados em serviços RESTful.

Enviado por

ana
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 34

Universidade Federal de Uberlândia

Faculdade de Computação

Programação para Internet


Módulo 11
Introdução aos Serviços Web e ao
Desenvolvimento de Aplicações Web com Java

Prof. Dr. Daniel A. Furtado


Introdução aos Serviços Web

Programação para Internet Prof. Dr. Daniel A. Furtado 2


Web Services
 Definição. Um web service é uma entidade de software
baseada em padrões, independente de linguagem, que
aceita requisições especialmente formatadas de outras
entidades de softwares em máquinas remotas por meio
de protocolos de comunicação universais, produzindo
respostas específicas da aplicação.

 De maneira simplista, web services são serviços de software


que aplicações web disponibilizam para outras aplicações
web utilizando padrões de comunicação universais, como
HTTP com JSON ou XML;
Ref.: Ioannis G. Baltopoulos
Programação para Internet Prof. Dr. Daniel A. Furtado 3
Web Services - Exemplos

 Exemplo de web service para busca de informações


de endereço a partir do CEP:
• https://viacep.com.br/ws/38408100/json/

Programação para Internet Prof. Dr. Daniel A. Furtado 4


Web Services - Benefícios
 Interoperabilidade e Integração. Empresas frequentemente possuem
sistemas diferentes, com dados próprios. Web services facilitam a
comunicação e integração desses sistemas (e até mesmo entre
sistemas de empresas diferentes).
 Reusabilidade. Uma função disponibilizada dentro de um domínio por
meio de um web service pode ser codificada uma única vez e utilizada
inúmeras vezes por outras aplicações. Por exemplo, é possível que um
mesmo web service seja acessado por uma aplicação interna, um
browser em um desktop, um aplicativo de celular ou por um navegador
mobile.
 Back-end/Front-end. Web services viabilizam a separação do front-end
do back-end em sistemas Web.

Programação para Internet Prof. Dr. Daniel A. Furtado 5


Tipos de Serviços Web

Programação para Internet Prof. Dr. Daniel A. Furtado 6


Tipos de Web Services
 Os web services são comumente categorizados de
acordo com a tecnologia em que se baseiam:
• SOAP
• REST

Programação para Internet Prof. Dr. Daniel A. Furtado 7


Tipos de Web Services
SOAP
• Protocolo baseado na linguagem XML, especificado pelo W3C, para a
troca de mensagens entre aplicações na Internet/Intranet
• Acrônimo para Simple Object Access Protocol
• Como é baseado na XML, é independente de plataforma ou linguagem
• Possibilita chamadas a métodos remotos (RPC), inclusive com
argumentos complexos, como se fossem chamadas locais;
• Provê uma espécie de “envelope” para o envio de mensagens de
serviços web através da Internet/Intranet
• Utiliza documentos WSDL (Web Service Description Language) para
descrever os serviços (localização, métodos, tipos de dados, etc)

Programação para Internet Prof. Dr. Daniel A. Furtado 8


SOAP - Exemplo
1) Exemplo de mensagem de requisição
SOAP para buscar no servidor a cotação
de uma ação na bolsa
2) Exemplo de uma mensagem de resposta
SOAP com o preço da ação

Uma desvantagem clara do SOAP é o


overhead com metadados, o que
demanda uma largura de banda maior.
Adaptado de w3schools.com
Programação para Internet Prof. Dr. Daniel A. Furtado 9
Tipos de Web Services
REST
• Representational State Transfer;
• Estilo arquitetural para comunicação entre aplicações na Web;
• Se baseia, na maioria das vezes, no protocolo HTTP e seus
códigos de status e nos métodos de requisição (POST, GET, PUT,
PATCH, DELETE, OPTIONS e HEAD);
• Diferente do SOAP, não impõe restrições ao formato da mensagem, mas
apenas no comportamento das entidades envolvidas:
→ Mais flexível: o desenvolvedor pode utilizar o formato que for mais
apropriado, como XML, JSON, texto, etc.
• Trata objetos no servidor como recursos que podem ser criados, modificados
ou removidos;
• Independente de linguagem de programação;
RESTful
• Termo comumente utilizado para designar aplicações ou APIs baseadas no estilo REST

Programação para Internet Prof. Dr. Daniel A. Furtado 10


Web Service Rest - Exemplos
 O serviço de busca de endereço mostrado
anteriormente é um exemplo de serviço RESTful:
• https://viacep.com.br/ws/38408100/json/

 Nesse exemplo, para obter a resposta no formato xml,


por exemplo, basta trocar a palavra json na URL por xml

Programação para Internet Prof. Dr. Daniel A. Furtado 11


SOAP vs REST
Leitura recomendada:

http://www.java2blog.com/2016/06/difference-
between-soap-and-rest-web-services.html

Programação para Internet Prof. Dr. Daniel A. Furtado 12


Conceito de Idempotência e Métodos
HTTP no Contexto de Serviços RESTful

Programação para Internet Prof. Dr. Daniel A. Furtado 13


Web Services e Idempotência

Um requisição HTTP é dita idempotente quando


mantem a seguinte propriedade:
 Executar a requisição múltiplas vezes tem o mesmo
efeito que executá-la uma única vez

Programação para Internet Prof. Dr. Daniel A. Furtado 14


Principais Métodos HTTP para serviços RESTful
POST
• Utilizado para criar novos recursos (por exemplo, em conjunto
com a operação INSERT da SQL)
• Em geral, altera o estado da aplicação no servidor
• Em caso de sucesso, deve-se retornar o código HTTP 201 (Created)
• Por definição, não é idempotente. Isto significa que sucessivas
requisições* utilizando o POST podem ter efeitos diferentes
(por exemplo, podem resultar na criação de dois ou mais
recursos contendo a mesma informação).

*Requisições idênticas
Lista dos códigos de status HTTP: https://en.wikipedia.org/wiki/List_of_HTTP_status_codes
Mais detalhes sobre POST: https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST

Programação para Internet Prof. Dr. Daniel A. Furtado 15


Principais Métodos HTTP para serviços RESTful
GET
• Utilizado normalmente para operações de leitura de recursos (por exemplo, em
conjunto com a operação SELECT da SQL);
• Não altera o estado da aplicação no servidor;
• Em caso de sucesso, retorna-se uma representação do recurso no formato XML,
JSON ou Texto e o código HTTP 200 (OK)
• Por definição, é idempotente. Isto significa que um usuário (ou alguma
ferramenta de software) pode executar a mesma requisição inúmeras vezes sem
se preocupar em produzir efeitos diversos no servidor.
• Leitura complementar: https://stackoverflow.com/questions/18395523/what-is-
difference-between-http-methods-get-post-put-and-delete

Mais detalhes sobre o método GET:


https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/GET

Programação para Internet Prof. Dr. Daniel A. Furtado 16


Principais Métodos HTTP para serviços RESTful
PUT
• Utilizado para operações de atualização/substituição por inteiro de um recurso
(muitas vezes, envolve a operação UPDATE da SQL);
• Semelhante ao método POST, porém com a diferença de ser idempotente;
• Em outras palavras, se um recurso é atualizado por meio de uma requisição PUT
e, na sequência, a mesma requisição é repetida outras vezes, então todas elas
terão o mesmo resultado, uma vez que o recurso atualizado permanecerá no
mesmo estado que estava logo após a primeira requisição;
• Em caso de sucesso, os possíveis códigos de status de retorno são 200, 201, 204
• Leitura complementar: https://stackoverflow.com/questions/23777714/actual-
use-of-get-put-delete-post-methods-in-http

Mais detalhes sobre o método PUT:


https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PUT
Programação para Internet Prof. Dr. Daniel A. Furtado 17
Principais Métodos HTTP para serviços RESTful
PATCH
• Frequentemente utilizado para operações de atualização parcial de
um recurso (por exemplo, atualização de um dado em particular de
um cliente, como número de telefone ou estado civil);
• Diferente do PUT, PATCH não é idempotente, o que significa que
requisições sucessivas utilizando PATCH podem ter efeitos diferentes;

Mais detalhes sobre o método PATCH:


https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PATCH

Programação para Internet Prof. Dr. Daniel A. Furtado 18


Principais Métodos HTTP para serviços RESTful
DELETE
• Utilizado para remover um recurso (por exemplo, envolvendo a
operação DELETE da SQL);
• Em caso de sucesso, deve-se retornar o código HTTP 200 (OK)
• É idempotente. Repetidas requisições para remoção do mesmo
recurso devem ter o mesmo resultado (200 – OK), ou seja, o recurso
foi apagado e continua apagado.

Uma descrição completa de todos os métodos HTTP pode ser obtida em:
https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html

Programação para Internet Prof. Dr. Daniel A. Furtado 19


Métodos Suportados em Formulários HTML e
Código de Retorno com PHP
 Vale destacar que, para submissão de formulários HTML
utilizando a tag <form>, os únicos métodos suportados são GET e
POST (não se deve utilizar method=‘put’, por exemplo);

 Entretanto, os demais métodos podem ser utilizados por meio de


requisições HTTP utilizando o objeto XMLHttpRequest ou o
métod jQuery $.ajax;

 Ver exemplo anexo.

Programação para Internet Prof. Dr. Daniel A. Furtado 20


Aplicações Web com Java

Exemplo Introdutório com Eclipse,


Tomcat, Maven e JSP

Programação para Internet Prof. Dr. Daniel A. Furtado 21


Algumas Tecnologias Envolvidas
Eclipse for Java EE Developers
Ambiente de desenvolvimento integrado (IDE) para
desenvolvimento em Java e diversas outras linguagens.
Apache Tomcat
Servidor Web de código aberto desenvolvido pela Apache
Software Foundation que implementa uma série de
especificações para desenvolvimento de aplicações Web
com Java.
Java Standard Edition (SE) Development Kit (JDK)
Kit para desenvolvimento de aplicações Java
Maven, POM

Programação para Internet Prof. Dr. Daniel A. Furtado 22


Algumas Tecnologias Envolvidas
Maven <project
xmlns="http://maven.apache.org/POM/4.0.0"
Ferramenta desenvolvida pela xmlns:xsi="http://www.w3.org/2001/XMLSchem
a-instance"
xsi:schemaLocation="http://maven.apache.or
Apache para gerenciar as g/POM/4.0.0
http://maven.apache.org/xsd/maven-
dependências do projeto (tais como 4.0.0.xsd">

bibliotecas e frameworks utilizados <modelVersion>4.0.0</modelVersion>


<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
pelo mesmo) e automatizar o <version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
processo de compilação (build) <name>Maven Quick Start Archetype</name>
<url>http://maven.apache.org</url>

pom.xml <dependencies>
<dependency>
É o arquivo XML utilizado para <groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.2</version>
configuração do Maven. POM é um <scope>test</scope>
</dependency>
acrônimo de Project Object Model. </dependencies>
</project>

Exemplo de arquivo pom.xml

Programação para Internet Prof. Dr. Daniel A. Furtado 23


Algumas Tecnologias Envolvidas
JSP
• Uma forma de criar web sites dinâmicos com Java é utilizando a tecnologia JSP
• JSP é um acrônimo de JavaServer Pages;
• Um arquivo JSP pode conter código HTML, CSS, JavaScript e Java propriamente
dito (de maneira semelhante a um arquivo PHP);
• Arquivos JSP são convertidos automaticamente em programas Java
denominados servlets*
Scriptlet JSP
• É o código Java escrito entre as tags <% e %> de um arquivo JSP;
Expressão JSP
• Utilizada para avaliar uma expressão Java simples;
• Colocada entre <%= expressão %>
*Com a crescente popularidade dos frameworks MVC (como Spring), a tecnologia JSP com
Servlets já não é amplamente utilizada no desenvolvimento de novas aplicações Web.
Entretanto, o entendimento dos conceitos envolvidos continua sendo fundamental para
formação sólida da base de conhecimento.
Programação para Internet Prof. Dr. Daniel A. Furtado 24
Exemplo de arquivo JSP
<html>
<body>
<h2>Hello World!</h2>
<%
for (int i = 0; i < 10; i++)
out.println("<h3>Texto gerado dinamicamente com Java</h3>");
%>
</body>
</html>

 Quando um arquivo JSP é acessado pela primeira vez, o servidor


Tomcat converte o arquivo JSP em um programa Java, denominado
servlet. Logo em seguida, o Tomcat compila o servlet e o executa;
 Nos próximos acessos o processo é mais rápido, uma vez que a
conversão e a compilação não são necessárias (exceto se o arquivo
JSP sofrer alguma alteração)

Programação para Internet Prof. Dr. Daniel A. Furtado 25


JavaServer Pages (JSP)
Primeira Requisição

Ref.: https://wtad640002.wordpress.com/2013/02/07/how-jsp-works/

Programação para Internet Prof. Dr. Daniel A. Furtado 26


JavaServer Pages (JSP)
Próximas Requisições

Ref.: https://wtad640002.wordpress.com/2013/02/07/how-jsp-works/

Programação para Internet Prof. Dr. Daniel A. Furtado 27


Servlet
 Um servlet normalmente contém pelo menos três
métodos:
• init()
• Inicializa o servlet;
• Executado quando o servlet é carregado.
• service()
• Executado toda vez em que a página é requisitada (HTTP request);
• Processa a requisição HTTP e fornece uma resposta (por exemplo,
em HTML) que é enviada para o cliente HTTP (navegador do
usuário, por exemplo)
• destroy()
• Executado antes do servlet ser encerrado e removido da memória

Programação para Internet Prof. Dr. Daniel A. Furtado 28


JSP request.getParameter
 Parâmetros da requisição podem ser resgatados com o
método getParameter, seja por GET ou POST
 Exemplo:
• String usuario = request.getParameter("usuario");

Programação para Internet Prof. Dr. Daniel A. Furtado 29


Baixando os Pré-requisitos
 Java Standard Edition (SE) Development Kit (JDK)
• http://www.oracle.com/technetwork/java/javase/downl
oads/jdk8-downloads-2133151.html

 Eclipse IDE for Java EE Developers


• https://www.eclipse.org/downloads/eclipse-packages/

 Apache Tomcat (servidor web)


• https://tomcat.apache.org/download-80.cgi
• Baixe o arquivo zip (core) e descompacte para a pasta
C:/Tomcat

Programação para Internet Prof. Dr. Daniel A. Furtado 30


Criando um Hello World
 Veja os passos necessários para se criar uma aplicação
Web utilizando as tecnologias Java, JSP, Eclipse, Maven e
Tomcat:
• https://crunchify.com/how-to-create-dynamic-web-
project-using-maven-in-eclipse/

Programação para Internet Prof. Dr. Daniel A. Furtado 31


Exemplo de Arquivo JSP
1. <%@ page import="java.util.*" %>

2. <!DOCTYPE html>
3. <html>
4. <head>
5. <title>Insert title here</title>
6. </head>
7. <body>

8. <%
9. String usuario = request.getParameter("usuario");
10. String senha = request.getParameter("senha");
11.
12. Date horaLogin = new Date();
13. %>

14. <h1>Bem vindo, <%=usuario%>! </h1>


15. <h2>Sua senha eh: <%=senha%> </h2>
16. <h3>Data e hora do login: <%=horaLogin %></h3>

17. </body>
18. </html>

Programação para Internet Prof. Dr. Daniel A. Furtado 32


Framework Spring Boot
 Materiais auxiliares
• https://javabrains.io/courses/spring_bootquickstart/ (Curso excelente)
• https://www.baeldung.com/spring-vs-spring-boot
• https://dzone.com/articles/spring-boot-vs-spring-mvc-vs-spring-how-do-
they-compare
• https://www.youtube.com/watch?reload=9&v=cNUQZnRRMco
• https://www.youtube.com/watch?v=rPMt8GhZkA0
• https://docs.spring.io/spring-boot/docs/current/reference/html/getting-
started-first-application.html

Programação para Internet Prof. Dr. Daniel A. Furtado 33


Referências
 www.w3schools.com
 https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
 http://nordicapis.com/rest-vs-soap-nordic-apis-infographic-
comparison/
 http://www.restapitutorial.com/lessons/httpmethods.html
 https://www.cl.cam.ac.uk/~ib249/teaching/Lecture1.handout.pdf
 https://www3.ntu.edu.sg/home/ehchua/programming/java/JSPB
yExample.html
 https://www.caelum.com.br/apostila-java-web/javaserver-pages/
 https://httpd.apache.org/docs/current/howto/htaccess.html

Programação para Internet Prof. Dr. Daniel A. Furtado 34

Você também pode gostar