1
resposta

Minha melhoria no primeiro desafio

Consegui fazer a interação da API do Google Books com o programinha Java. Mas notei que a pesquisa fazia o programa crashar, se o nome do título do livro tivesse mais de uma palavra. Observando o que poderia ser, notei que a pesquisa na API daria certo se ao invés de 'espaços' separando as palavras, tivessem '+' na query da URL. Decidi, então, fazer a substituição dos caracteres 'espaços' por '+' no próprio corpo do programa e, já aproveitando, joguei tudo para o LowerCase, caso o usuário digite com letras maiúsculas.

Abaixo compartilho meu código:

import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.Scanner;

public class Biblioteca {
    public static void main(String[] args) throws IOException, InterruptedException {
        Scanner leitor = new Scanner(System.in);
        System.out.println("Digite um livro: ");
        var pesquisa = leitor.nextLine();
        String pesquisaFormatada = pesquisa.replace(' ', '+').toLowerCase();

        String endereco = "https://www.googleapis.com/books/v1/volumes?q=" + pesquisaFormatada + "&callback=handleResponse";

        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(endereco))
                .build();

        HttpResponse<String> response = client
                .send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }
}

Implementei a String pesquisaFormatada, na linha 13, e ela faz a substituição, utilizando o método Replace do Java, dos 'espaços' por '+' e, na sequência, joga tudo para letras minúsculas, usando o toLowerCase(). E, só então, usa a pesquisaFormatada na query da URL para fazer a busca na API do Google Books.

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
1 resposta

Oi, Weslley! Como vai?

Com o que você descreveu, sua solução ficou bem consistente. A ideia de usar replace com toLowerCase() torna a query mais segura e evita que o programa quebre quando o usuário digita várias palavras.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!