Visão Geral do Módulo

Neste módulo, você aprenderá os conceitos fundamentais de WebServices, incluindo os diferentes tipos, protocolos e padrões utilizados na comunicação entre sistemas. Você compreenderá como os serviços web funcionam e como implementá-los em aplicações JavaScript, especialmente no contexto de desenvolvimento backend.

Carga Horária

12 horas

Pré-requisitos

Módulos 1, 2, 3 e 4

Conteúdo Programático

1. Introdução aos WebServices
  • O que são WebServices
  • História e evolução dos WebServices
  • Importância dos WebServices na arquitetura de sistemas
  • Vantagens e desvantagens dos WebServices
  • Cenários de uso e aplicações práticas
  • Interoperabilidade entre sistemas heterogêneos
2. Arquitetura de WebServices
  • Arquitetura cliente-servidor
  • Arquitetura orientada a serviços (SOA)
  • Arquitetura de microsserviços
  • Componentes de um WebService
  • Protocolos de comunicação
  • Formatos de dados (XML, JSON)
  • Comparação entre diferentes arquiteturas
3. Tipos de WebServices
  • SOAP (Simple Object Access Protocol)
    • Estrutura e componentes
    • Envelope SOAP
    • WSDL (Web Services Description Language)
    • Vantagens e desvantagens
  • REST (Representational State Transfer)
    • Princípios e restrições
    • Recursos e URIs
    • Métodos HTTP
    • Vantagens e desvantagens
  • GraphQL
    • Conceitos básicos
    • Queries e mutations
    • Schemas e tipos
    • Vantagens e desvantagens
  • gRPC
    • Conceitos básicos
    • Protocol Buffers
    • Vantagens e desvantagens
4. REST em Detalhes
  • Princípios REST
    • Interface uniforme
    • Stateless
    • Cacheable
    • Sistema em camadas
    • Código sob demanda (opcional)
  • Recursos e URIs
    • Identificação de recursos
    • Estrutura de URIs
    • Boas práticas na definição de URIs
  • Métodos HTTP
    • GET: recuperação de recursos
    • POST: criação de recursos
    • PUT: atualização completa de recursos
    • PATCH: atualização parcial de recursos
    • DELETE: remoção de recursos
    • HEAD e OPTIONS
  • Códigos de status HTTP
    • 2xx: sucesso
    • 3xx: redirecionamento
    • 4xx: erro do cliente
    • 5xx: erro do servidor
  • Representações de recursos (JSON, XML)
  • HATEOAS (Hypermedia as the Engine of Application State)
5. Segurança em WebServices
  • Autenticação e autorização
    • Basic Authentication
    • Digest Authentication
    • OAuth 2.0
    • JWT (JSON Web Tokens)
    • API Keys
  • HTTPS e TLS/SSL
  • Vulnerabilidades comuns
    • Injeção de SQL
    • Cross-Site Scripting (XSS)
    • Cross-Site Request Forgery (CSRF)
    • Exposição de dados sensíveis
  • Boas práticas de segurança
    • Validação de entrada
    • Sanitização de saída
    • Rate limiting
    • CORS (Cross-Origin Resource Sharing)
6. Documentação de APIs
  • Importância da documentação
  • Especificações e padrões
    • OpenAPI (Swagger)
    • RAML (RESTful API Modeling Language)
    • API Blueprint
  • Ferramentas de documentação
    • Swagger UI
    • ReDoc
    • Postman
  • Documentação como código
  • Boas práticas na documentação de APIs
7. Consumo de WebServices
  • Consumo de APIs REST em JavaScript
    • XMLHttpRequest
    • Fetch API
    • Axios
    • Tratamento de respostas
    • Tratamento de erros
  • Consumo de APIs SOAP
    • Bibliotecas para SOAP em JavaScript
    • Parsing de XML
  • Consumo de APIs GraphQL
    • Construção de queries
    • Bibliotecas para GraphQL
  • Autenticação ao consumir APIs
  • Estratégias de cache
  • Tratamento de paginação
8. Criação de WebServices com JavaScript
  • Criação de APIs REST com Node.js
    • Frameworks e bibliotecas (Express, Koa, Fastify)
    • Definição de rotas
    • Middleware
    • Manipulação de requisições e respostas
  • Implementação de CRUD
    • Criação de recursos (POST)
    • Leitura de recursos (GET)
    • Atualização de recursos (PUT/PATCH)
    • Remoção de recursos (DELETE)
  • Validação de dados
  • Tratamento de erros
  • Implementação de autenticação e autorização
  • Documentação automática
  • Testes de APIs
9. Versionamento de APIs
  • Importância do versionamento
  • Estratégias de versionamento
    • Versionamento na URL
    • Versionamento no header
    • Versionamento por content negotiation
    • Versionamento por parâmetro de query
  • Compatibilidade retroativa
  • Depreciação de APIs
  • Comunicação de mudanças
  • Boas práticas de versionamento
10. Tendências e Futuro dos WebServices
  • APIs assíncronas e event-driven
  • WebSockets e comunicação em tempo real
  • Serverless APIs
  • API Gateways
  • APIs como produtos
  • Monetização de APIs
  • Métricas e análise de APIs

Exercícios Práticos

Para fixar os conceitos aprendidos neste módulo, recomendamos a realização dos seguintes exercícios:

  1. Crie um cliente JavaScript que consuma uma API pública (como a API do GitHub, OpenWeatherMap, etc.) utilizando a Fetch API.
  2. Implemente uma API REST simples com Express para gerenciar produtos, incluindo operações CRUD completas.
  3. Adicione autenticação JWT à sua API de produtos, protegendo rotas que modificam dados.
  4. Implemente paginação, ordenação e filtragem na listagem de produtos da sua API.
  5. Documente sua API utilizando Swagger/OpenAPI.
  6. Crie testes automatizados para sua API utilizando ferramentas como Jest e Supertest.
  7. Implemente versionamento na sua API (por exemplo, /api/v1/produtos).
  8. Crie um middleware para logging de requisições e respostas.
  9. Implemente validação de dados nas rotas de criação e atualização de produtos.
  10. Crie uma interface web simples que consuma sua API de produtos.

Pronto para avançar?

Após dominar os conceitos de WebServices, você estará preparado para avançar para o próximo módulo.

Próximo Módulo: Node.js