Use o código e tenha 10% de desconto!

APIs REST em Kotlin Seus serviços prontos para o mundo real

Alexandre Saudate

*Você terá acesso às futuras atualizações do livro.

Introdução

Este livro nasceu como uma releitura do meu livro recém-publicado APIs REST: Seus serviços prontos para o mundo real. Tive a ideia de reescrevê-lo em Kotlin pois, no momento, Kotlin ainda é vista pelo mercado como uma linguagem extremamente promissora, porém mais fortemente relegada ao nicho de desenvolvimento de aplicações para Android.

A proposta deste livro, portanto, é abordar os mesmos exemplos utilizados no livro de APIs REST, porém em Kotlin. Se você já possui o outro livro, acredito que seja especialmente interessante ler este para que você possa fazer o comparativo entre as linguagens. Kotlin é uma linguagem que permite escrita de códigos tanto sob o paradigma orientado a objetos quanto sob o paradigma funcional, e mesmo assim, o faz de maneira harmônica entre ambos. É possível escrever extensões de classes fora destas e também DSLs (os próprios arquivos Gradle utilizados na escrita deste livro estão em Kotlin). Em resumo, é uma linguagem extremamente poderosa, que permite que criemos aplicações de fácil leitura e manutenção, além de se beneficiar da execução sobre a JVM.

Este livro, assim como sua contrapartida em Java, é dividido em duas partes: a primeira, voltada à parte mais básica sobre serviços REST e por onde iniciar esse desenvolvimento. A segunda parte, sobre APIs, procura abordar as questões necessárias para que os serviços REST sejam realmente aproveitados por outros desenvolvedores. Em outras palavras, como podemos criar APIs expostas para o público.

Assim sendo, este livro foi dividido nos seguintes capítulos:

O capítulo 1 apresenta o aplicativo C.A.R., que faz intermediação entre pessoas que precisam de um transporte rápido e motoristas que possuem um carro e podem prestar esse serviço. Neste capítulo, criaremos a primeira API do aplicativo, que recupera dados de passageiros. Apresento alguns conceitos básicos, como os principais métodos HTTP necessários para desenvolver uma API REST.

No capítulo 2, essa API será expandida e veremos como recuperar dados de passageiros específicos, além de como criar esses dados, atualizá-los (total ou parcial) e apagá-los - tudo isso com um cliente especializado, o Postman. Também veremos como funciona um dos pilares fundamentais de REST, o da negociação de conteúdo, e conheceremos a idempotência e seus efeitos práticos sobre as APIs.

No capítulo 3, nós vamos criar a API de solicitação de viagens e vamos relacionar essa API com a de gerenciamento de passageiros através do uso de HATEOAS (uma das técnicas mais importantes de REST).

No capítulo 4, utilizaremos o serviço do Google Maps para incrementar a API criada no capítulo anterior. Desta forma, veremos como criar um cliente de uma API REST e também vamos conhecer o JSONPath, uma poderosa técnica de busca de dados dentro de um documento JSON.

No capítulo 5, vamos realizar os testes de ponta a ponta. Vamos aprender como criar um dublê do serviço do Google Maps com o Wiremock (desta forma, dispensando o consumo da API quando estivermos executando os testes) e também vamos aprender a usar uma ferramenta especializada em testes de serviços REST, o REST Assured.

No capítulo 6, acrescentaremos uma camada de segurança aos nossos serviços. Vamos ver como funciona o HTTPS e vamos gerar um certificado e implantá-lo na nossa API. Também vamos implantar autenticação BASIC nas nossas APIs.

A partir do capítulo 7, inicia-se a segunda parte do livro, sobre APIs. Esse capítulo vai utilizar os conhecimentos já adquiridos ao longo do livro e sedimentá-los. Então, veremos como criar URLs mais significativas para nossos clientes, quais os códigos HTTP mais importantes, como fornecer mensagens de erro significativas, como internacionalizar as mensagens de erro e, finalmente, como criar APIs retrocompatíveis (técnica muito importante em casos de APIs públicas ou aplicativos mobile).

No capítulo 8, nós vamos aprender a documentar nossas APIs. Vamos criar uma API viva com Swagger e também veremos como usar o Documenter do Postman.

No capítulo 9, veremos algumas técnicas que não puderam ser abordadas ao longo do livro. Veremos como paginar serviços, implementar a técnica CORS (importante para consumir os serviços REST a partir de páginas web), autenticação com OAuth e, finalmente, como utilizar o AWS API Gateway para que possamos ter mais segurança ao expor APIs públicas. Apresentarei como criar e utilizar sua conta na AWS de forma controlada, para que não haja problemas em relação aos custos.

No capítulo 10, apresento algumas tecnologias que não estão necessariamente relacionadas às APIs em REST, mas fazem parte de um ecossistema mais amplo de APIs.

Este livro foi escrito com muito carinho, levando em consideração a bagagem que acumulei ao longo dos anos e também como resultado de muitas conversas com desenvolvedores e desenvolvedoras como você. Dessa forma, procurei abordar os conceitos que considero os mais importantes.

Caso você, leitor ou leitora, sinta que algum conceito não está suficientemente claro, ou tenha sentido falta de alguma técnica, sinta-se à vontade para entrar em contato comigo diretamente, através do e-mail alesaudate@gmail.com. Esse é meu compromisso com você.

Pré-requisitos

Este livro é uma história contada sobre uma aplicação fictícia chamada C.A.R., um aplicativo para solicitação de carros para viagens curtas. Essa aplicação é desenvolvida em Kotlin utilizando o Spring Boot como framework para basear tudo e Gradle como controlador de build.

Essas ferramentas foram escolhidas para que você esteja o mais imerso possível no mundo Kotlin. Até o momento da escrita deste livro, Kotlin ainda é percebido pelo mercado como uma linguagem focada no desenvolvimento de aplicativos para Android, e não para aplicações de backend.

Assim sendo, o ferramental que utilizaremos é o que proporciona maior imersão na forma de desenvolver aplicações deste tipo utilizando Kotlin.

A simplicidade foi o principal conceito utilizado para escrita deste livro. Todos os exemplos foram pensados de forma que você consiga acompanhá-los ainda que não tenha conhecimento sobre Spring Boot ou mesmo sobre programação em Java.

Mas o ideal é que você reescreva estes exemplos em sua máquina, utilizando a IDE IntelliJ IDEA (https://www.jetbrains.com/pt-br/idea/). Esta IDE é criada e mantida pela mesma organização que criou a linguagem Kotlin, a JetBrains.

Tenho certeza de que, dessa forma, você conseguirá tirar o máximo proveito do que apresento aqui.

Sobre o autor

Este é meu quarto livro escrito pela Casa do Código. Antes dele, escrevi SOA Aplicado: integrando com web services e além, REST: Construa APIs inteligentes de maneira simples e APIs REST: Seus serviços prontos para o mundo real.

Trabalho como especialista de software no PagSeguro e anteriormente passei por empresas, como Guichê Virtual, Sciensa e Serasa Experian. Como consultor, prestei serviços a empresas dos mais diversos segmentos de atuação, como Netshoes, CVC, Magazine Luiza, iG, Oi internet, e muitas outras.

Por muitos anos, trabalhei como especialista em SOA. Desde o início procurei sempre ter em mente a concepção original dessa arquitetura - algo muito próximo ao que hoje reconhecemos como microsserviços. Essa experiência me levou a adotar REST ainda em seus primórdios no país. Utilizei REST pela primeira vez em um projeto para o iG em 2011. Desde então, venho estudando cada vez mais sobre o assunto e procurando entender a forma como essa técnica ajuda desenvolvedores e desenvolvedoras em todo o mundo a oferecer aplicações cada vez mais interconectadas.

Sumário

  • Parte 1 - Serviços em REST
  • 1 O que é REST, afinal?
    • 1.1 Utilizando o Spring Boot para criar uma primeira API
    • 1.2 O primeiro caso de uso: a listagem de novos motoristas
    • 1.3 Quais são os métodos HTTP e como escolher entre eles?
  • 2 Expandindo nosso serviço inicial
    • 2.1 Recuperando os dados de um motorista específico
    • 2.2 Conhecendo os códigos de status
    • 2.3 Utilizando um cliente adequado - introdução ao Postman
    • 2.4 Negociação de conteúdo
    • 2.5 Enviando dados para o servidor
    • 2.6 Idempotência: os efeitos de invocações sucessivas
    • 2.7 Atualizando os dados enviados com PUT e PATCH
    • 2.8 Apagando os dados de um determinado motorista
  • 3 Criando relacionamentos entre recursos
    • 3.1 Criando a API de passageiros
    • 3.2 Criando a API de solicitação de viagens
    • 3.3 Criação do serviço de solicitação de viagens
    • 3.4 Inserindo links: primeiro uso de HATEOAS
  • 4 Criando clientes REST
    • 4.1 Reorganizando o projeto
    • 4.2 Criando a chave de API do Google
    • 4.3 Criando o código do cliente
    • 4.4 Recuperando os dados com JSONPath
    • 4.5 Integrando a consulta no projeto
    • 4.6 Testando a nova API
  • 5 Criando os testes automatizados
    • 5.1 Conhecendo as estratégias de teste
    • 5.2 Criando os testes da API de passageiros com REST Assured
    • 5.3 Executando o teste
    • 5.4 Testes mais completos com WireMock
    • 5.5 Configuração do mock do Google Maps
  • 6 Segurança
    • 6.1 Conhecendo HTTPS
    • 6.2 Implementando HTTPS na nossa API
    • 6.3 Incluindo autenticação básica
    • 6.4 Criando sistema de autorização
    • 6.5 Carregando os usuários pelo banco de dados
    • 6.6 Atualização dos testes integrados
  • Parte 2 - APIs
  • 7 APIs
    • 7.1 Como criar URLs significativas
    • 7.2 Utilização dos códigos HTTP corretos
    • 7.3 Fornecer mensagens de erro significativas
    • 7.4 Internacionalizando as mensagens de erro
    • 7.5 Como criar uma API retrocompatível (ou: como versionar uma API)
  • 8 Documentando a API
    • 8.1 Criando uma documentação viva com Swagger/OpenAPI
    • 8.2 Utilizando o documenter do Postman
  • 9 Outras técnicas
    • 9.1 Paginação
    • 9.2 CORS
    • 9.3 OAuth
    • 9.4 AWS API Gateway
  • 10 Considerações finais
  • 11 Referências bibliográficas

Dados do produto

Número de páginas:
321
ISBN:
978-65-86110-71-5
Data publicação:
07/2021

Compartilhe!

Compartilhe no Facebook Compartilhe no Twitter

*Você terá acesso às futuras atualizações do livro.