1
resposta

Api google books

package Com.Vn.screenmatch.main;

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;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

public class Exercise {
    static void main(String[] args) throws IOException, InterruptedException {
        Scanner sc = new Scanner(System.in);
        System.out.println("What do you wanna read? ");
        var reading = sc.nextLine().replace(" ", "+");

        String address = "https://www.googleapis.com/books/v1/volumes?q=" + reading;
        HttpClient client = HttpClient.newHttpClient();

        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(address))
                .build();
        HttpResponse<String> response = client
                .send(request, HttpResponse.BodyHandlers.ofString());


        String json = response.body();

        JsonObject root = JsonParser.parseString(json).getAsJsonObject();

        JsonObject firstBook = root
                .getAsJsonArray("items")
                .get(0)
                .getAsJsonObject()
                .getAsJsonObject("volumeInfo");

        String title = firstBook.get("title").getAsString();
        String author = firstBook.getAsJsonArray("authors").get(0).getAsString();
        String publisher = firstBook.get("publisher").getAsString();
        String published = firstBook.get("publishedDate").getAsString();

        System.out.println("Title: " + title);
        System.out.println("Author: " + author);
        System.out.println("Publisher: " + publisher);
        System.out.println("Published: " + published);
    }
}
1 resposta

Oi, Vinicius. Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Gostei da forma como você montou a requisição com HttpClient, tratou a busca substituindo espaços por + e já navegou pelo JSON até chegar em volumeInfo. Isso mostra que você entendeu bem o fluxo entre requisição, resposta e extração de dados da API. Um ponto importante é que campos como authors, publisher ou até items podem não existir em algumas respostas, então vale adicionar uma validação para evitar erro ao acessar essas informações.

Uma dica interessante para o futuro é usar has() antes de ler um campo do JSON.


if (firstBook.has("publisher")) {
    String publisher = firstBook.get("publisher").getAsString();
    System.out.println(publisher);
} else {
    System.out.println("editora nao informada");
}
Conteúdos relacionados
Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!