Web Services 🌐
Um Web Service é uma tecnologia que permite a comunicação entre diferentes sistemas de software pela internet, mais especificamente, pela World Wide Web. Ele é projetado para facilitar a interoperabilidade entre aplicativos, permitindo que eles compartilhem dados e funcionalidades de forma eficiente e segura, independentemente da plataforma ou linguagem de programação utilizada.
Na essência, um Web Service disponibiliza uma interface acessível pela web, utilizando padrões abertos e protocolos como HTTP, XML e JSON para trocar informações entre sistemas. Isso significa que um sistema pode solicitar dados ou serviços a partir de outro sistema, enviar informações e até mesmo realizar operações remotas, tudo isso através de chamadas HTTP.
Existem diferentes tipos de Web Services, sendo os mais comuns:
-
XML Web Services: Utiliza dois padrões principais: SOAP e WSDL. O SOAP (Simple Object Access Protocol) é um protocolo baseado em XML para troca de mensagens entre sistemas, enquanto o WSDL (Web Services Description Language) é uma linguagem baseada em XML para descrever a interface de um Web Service. Os Web Services baseados em XML são mais complexos e pesados, mas oferecem suporte a funcionalidades avançadas, como segurança e transações.
-
REST (Representational State Transfer): O REST é um estilo arquitetural que utiliza os próprios métodos HTTP, como GET, POST, PUT e DELETE, para realizar operações sobre recursos. Os Web Services RESTful são geralmente mais simples de implementar e mais leves que os serviços SOAP. Devido à sua simplicidade, atualmente, existe uma grande adesão a este estilo de Web Service, por essa razão, o REST será o foco desta disciplina.
Os Web Services são amplamente utilizados na integração de sistemas, permitindo que diferentes aplicações se comuniquem e cooperem entre si de forma transparente. Eles são essenciais para o desenvolvimento de sistemas distribuídos e aplicações que dependem da troca de dados com outros sistemas pela internet.
Além disso, os Web Services desempenham um papel fundamental na construção de arquiteturas de sistemas como a de micro serviços. Micro serviços são uma abordagem arquitetural na qual um aplicativo é construído como um conjunto de pequenos serviços independentes, cada um executando um processo específico e comunicando-se através de APIs leves, geralmente baseadas em serviços REST ou protocolos de mensagens assíncronas. Cada serviço é desenvolvido, implantado e dimensionado de forma independente, permitindo maior flexibilidade, escalabilidade e facilidade de manutenção em comparação com arquiteturas monolíticas. Essa modularidade dos micro serviços facilita a evolução contínua do sistema, tornando-os uma escolha popular para aplicações modernas e distribuídas.
Para saber mais sobre Web Services: consulte o o capítulo 7 do livro Desenvolvimento de software, v.3 programação de sistemas web orientada a objetos em Java para compreender detalhes sobre a implementação de Web Services em Java.
Exercício 📝
Desenvolva um Web Service em Rest utilizando o framework Quarkus que permita realizar as seguintes conversões de unidades de medida:
- Conversão de Quilômetro por hora para Milhas por hora:
- Este método deve aceitar requisições do tipo POST e produzir os resultados em formato de texto.
- A fórmula de conversão a ser utilizada é: 1 quilômetro por hora equivale a 0.621371 milhas por hora.
- Conversão de Nós para Quilômetros por hora:
- Este método deve aceitar requisições do tipo GET e retornar os resultados em formato JSON.
- A fórmula de conversão a ser aplicada é: 1 nó equivale a 1.852 quilômetros por hora.
Certifique-se de implementar corretamente os casos de teste do exercício.
/**
* Test case for converting kilometers to miles.
*
* This test sends a POST request to the "/Conversion/km-to-miles"
* endpoint with a body of "50" (representing 50 kilometers per hour).
* The expected result is a response with a status code of 200 and a
* body of "31.06855" (the equivalent value in miles per hour).
*/
@Test
void testConversionKmMiles() {
given()
.contentType(ContentType.TEXT)
// 50 quilômetros por hora
.body("50")
.when()
.post("/Conversion/km-to-miles")
.then()
.contentType(ContentType.TEXT)
.statusCode(200)
.body(is("31.06855"));
}
/**
* Test case to verify the conversion from knots to kilometers per hour.
* The expected value for 1 knot in km/h is 1.852.
*/
@Test
void testConversionKnotsKm() {
given()
.contentType(ContentType.TEXT)
.when()
.contentType(ContentType.JSON)
.get("/Conversion/knots-to-km/1")
.then()
.statusCode(200)
.body("value", is(1.852f));
}
⚠️ Caso você tenha dificuldades para implementar o exercício, consulte o
código fonte do projeto [PW2 ConversionService](https://github.com/rpmhubdev/pw2-conversion)
para obter um exemplo.
RESTFul Web Services
Deprecated
XML Web Services
Deprecated
Dúvidas na configuração do XML Web Service? seguem os arquivos de configuração server.xml e pom.xml utilizados no vídeo.
Referências 📚
-
Alex Soto Bueno; Jason Porter; Quarkus Cookbook: Kubernetes-Optimized Java Solutions. Editora: O’Reilly Media, 2020.
CC BY 4.0 DEED