Tópico 07 - Web Services

Tópico 07 - Web Services

Disciplina de Backend - Professor Ramon Venson - SATC 2026.1
Tópico 07 - Web Services

Web Services

Web Services são serviços que podem ser acessados pela Web.

Um web service permite que diferentes tipos de clientes acessem o serviço, mesmo em diferentes plataformas.

Disciplina de Backend - Professor Ramon Venson - SATC 2026.1
Tópico 07 - Web Services

Características

Um web service possui as seguintes características:

  • Interoperabilidade, trabalhando com diferentes tipos de clientes
  • Portabilidade, podendo ser implantado em diferentes ambientes com mínimo impacto para clientes e integrações.
  • Escalabilidade, podendo atender múltiplos usuários.
Disciplina de Backend - Professor Ramon Venson - SATC 2026.1
Tópico 07 - Web Services

Web Services e Web APIs


Web API é um termo mais comum para descrever os serviços que fornecem dados para outros sistemas.

Estabelecendo um padrão de comunicação público, essas APIs são consumidas por diferentes clientes.

Disciplina de Backend - Professor Ramon Venson - SATC 2026.1
Tópico 07 - Web Services

Web API populares

São muitos os web services famosos que podemos acessar, como:

Disciplina de Backend - Professor Ramon Venson - SATC 2026.1
Tópico 07 - Web Services

Protocolos de Comunicação

Web services podem ser acessados por meio de diferentes protocolos de comunicação, como:

  • HTTP e HTTPS
Disciplina de Backend - Professor Ramon Venson - SATC 2026.1
Tópico 07 - Web Services

Formatos de Dados

Dado que web services são acessados por meio de diferentes plataformas, é necessário que os dados sejam enviados e recebidos em um formato padronizado. Esses formatos incluem:

  • XML
  • JSON
  • YAML
  • CSV
  • Plain Text
Disciplina de Backend - Professor Ramon Venson - SATC 2026.1
Tópico 07 - Web Services

Arquiteturas

Web services podem ser implementados usando diferentes arquiteturas, como:

  • SOAP
  • REST
  • gRPC
  • GraphQL
  • Entre outros
Disciplina de Backend - Professor Ramon Venson - SATC 2026.1
Tópico 07 - Web Services

Comunicação em tempo real

WebSocket não é uma arquitetura no mesmo nível de REST ou SOAP.

Ele é um protocolo para comunicação bidirecional e persistente, útil em cenários como:

  • Chats
  • Jogos online
  • Notificações em tempo real
  • Dashboards ao vivo
Disciplina de Backend - Professor Ramon Venson - SATC 2026.1
Tópico 07 - Web Services

Comparando abordagens

Tecnologia Formato comum Melhor uso
REST JSON CRUD e APIs web tradicionais
SOAP XML Integrações corporativas e contratos formais
gRPC Protobuf Comunicação entre serviços com alta performance
GraphQL JSON Consultas flexíveis e múltiplos clientes
WebSocket Frames Atualizações em tempo real
Disciplina de Backend - Professor Ramon Venson - SATC 2026.1
Tópico 07 - Web Services

Exemplo de contrato de API

POST /produtos HTTP/1.1
Host: api.exemplo.com
Content-Type: application/json

{
  "nome": "Mouse Gamer",
  "preco": 149.90
}
Disciplina de Backend - Professor Ramon Venson - SATC 2026.1
Tópico 07 - Web Services

Resposta esperada

HTTP/1.1 201 Created
Content-Type: application/json

{
  "id": 101,
  "nome": "Mouse Gamer",
  "preco": 149.90
}

Esse contrato define rota, método, formato e status esperado.

Disciplina de Backend - Professor Ramon Venson - SATC 2026.1
Tópico 07 - Web Services

Frameworks para Web Services

Existem diversos frameworks que facilitam o desenvolvimento de web services. Exemplos são:

  • Spring Web
  • NestJS
  • Express
  • Flask
  • Laravel
Disciplina de Backend - Professor Ramon Venson - SATC 2026.1
Tópico 07 - Web Services

Spring Web

Exemplo:

@RestController
public class HelloWorldController {
    @GetMapping("/")
    public String olaMundo() {
        return "Olá mundo";
    }
}
Disciplina de Backend - Professor Ramon Venson - SATC 2026.1
Tópico 07 - Web Services

NestJS

Exemplo:

import { Controller, Get } from '@nestjs/common';
@Controller()
export class AppController {
  @Get()
  getHello(): string {
  return 'Hello World!';
  }
}
Disciplina de Backend - Professor Ramon Venson - SATC 2026.1
Tópico 07 - Web Services

Express

Exemplo:

const express = require('express')
const app = express()
const port = 3000
app.get('/', (req, res) => {
  res.send('Hello World!')
})
app.listen(port, () => {
    console.log(`Example app listening on port ${port}`)
}
Disciplina de Backend - Professor Ramon Venson - SATC 2026.1
Tópico 07 - Web Services

Flask

Exemplo:

from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
    return 'Hello, World!'
Disciplina de Backend - Professor Ramon Venson - SATC 2026.1
Tópico 07 - Web Services

Laravel

Exemplo:

<?php
class PostController extends Controller
{
    public function index(): JsonResponse
    {
        return response()->json("Olá mundo!", 200);
    }
}
?>
Disciplina de Backend - Professor Ramon Venson - SATC 2026.1
Tópico 07 - Web Services

Microsserviços e Monolitos

Existem dois tipos de arquitetura de software frequentemente utilizados na construção de web services.

Enquanto monolitos são sistemas completos, com múltiplos domínios, microsserviços são sistemas menores que trabalham em conjunto.

Disciplina de Backend - Professor Ramon Venson - SATC 2026.1
Tópico 07 - Web Services

Deploy de Web Services

Para disponibilizar um web service para acesso público, é necessário hospedar em um servidor. Isso pode ser feito em diferentes tipos de infraestrutura:

  • Servidores Físicos - Configurando e gerenciando um servidor físico;
  • Servidores Virtuais Privados (VPS) - Utilizando um servidor virtual contratado;
  • Serviços de Nuvem - Com diferentes provedores de nuvem (AWS, Azure, GCloud...)
Disciplina de Backend - Professor Ramon Venson - SATC 2026.1
Tópico 07 - Web Services

Material de Apoio

Disciplina de Backend - Professor Ramon Venson - SATC 2026.1

* **Interoperabilidade**: Deve ser possível acessar o web service de qualquer cliente, independente do sistema operacional ou linguagem de programação utilizada. * **Portabilidade**: Deve ser possível acessar o web service de qualquer lugar, independente do local onde ele está hospedado. * **Escalabilidade**: Deve ser possível acessar o web service de qualquer lugar, independente do número de usuários que estão acessando o web service.