APIs REST Seus serviços prontos para o mundo real
Alexandre SaudateIntrodução
Este livro nasceu com uma proposta de ser uma segunda versão do meu livro "REST: Construa API's inteligentes de maneira simples". Ele tinha sido publicado originalmente em 2013, então eu achava que ele merecia uma revisão dos tópicos, sete anos depois.
No processo de reescrita algo aconteceu. Percebi que queria um livro mais pragmático, mais conectado à realidade brasileira - a necessidade de um livro com resultados mais práticos, mais ligados ao dia a dia dos desenvolvedores brasileiros. Quando fiz isso, comecei a ignorar o livro anterior e escrever este livro do zero.
O resultado foi um livro que apresenta a parte teórica apenas quando requisitada pela parte prática. Em outras palavras, a teoria se faz presente apenas quando ela é requisitada para que se cumpra o objetivo da prática.
A partir dessa concepção, segui com a escrita. Passei a abordar muito mais coisas sobre APIs e não apenas sobre REST. E daí notei que seria mais interessante dividir o livro em duas partes: a primeira, mais voltada à parte mais básica sobre serviços REST e por onde iniciar esse desenvolvimento. A segunda parte, sobre APIs, procura abordar mais 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 fazer esse transporte. Neste capítulo, vamos criar a primeira API do aplicativo, que recupera dados de passageiros. Apresento alguns conceitos básicos, como quais são os principais métodos HTTP necessários para desenvolver uma API REST.
No capítulo 2 esta API é expandida, e daí vemos como recuperar dados de passageiros específicos, além de como criar estes dados, atualizar (total ou parcial) e apagar - 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 o que é 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 esta 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 nós vamos utilizar 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 nós 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 vamos acrescentar uma camada de segurança nos nossos serviços. Vamos ver como funciona o HTTPS, e também 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 os sedimenta. 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 como você. Desta forma, procurei abordar os conceitos que tive como 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. Este é 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. Esta aplicação é desenvolvida em Java 8, utilizando o Spring Boot como framework para basear tudo e Maven como controlador de build.
Estas ferramentas foram escolhidas como aquelas que podem alcançar o maior número de leitores, não por serem as mais recentes ou por serem as "melhores". Ainda assim, a simplicidade é o principal conceito utilizado aqui - procurei escrever todos os exemplos de forma que, mesmo que você não tenha conhecimento sobre Spring Boot ou nem mesmo seja desenvolvedor(a) Java, consiga acompanhar os conceitos. Mas o ideal, mesmo, é que você acompanhe os exemplos reescrevendo os exemplos em sua própria máquina e "brincando" com os conceitos apresentados. Tenho certeza que, desta forma, você conseguirá tirar o máximo proveito do que apresento aqui.
Sobre o autor
Este é meu terceiro livro escrito pela Casa do Código. Antes dele, escrevi "SOA Aplicado: integrando com web services e além" e também "REST: Construa API's inteligentes de maneira simples".
Trabalho como especialista de software no PagSeguro, tendo anteriormente passado por empresas como Guichê Virtual, Sciensa e Serasa Experian. Como consultor, prestei serviços para 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 desta arquitetura - algo muito próximo ao que hoje reconhecemos como microsserviços. Esta experiência me levou a adotar REST ainda em seus primórdios no país. Utilizei REST pela primeira vez em um projeto em 2011, em projeto para o iG. Desde então, venho estudando cada vez mais sobre o assunto e procurando entender a forma como esta técnica ajuda desenvolvedores 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 Utilizar os 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-56-2
- Data publicação:
- 01/2021. Atualizado em 08/2024.