Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Entendimento em relação aos códigos apresentados

Não entendi o que significavam os códigos à qual a instrutora estava escrevendo ao decorrer da aula

Então, parei o que estava fazendo e logo mandei um prompt à Luri e ela me retornou o seguinte resultado:

"Entendo que você está com dúvidas sobre o significado de cada código utilizado no exemplo. Vou te explicar:

A classe HttpClient é responsável por fazer requisições HTTP.
A classe HttpRequest é utilizada para construir uma requisição HTTP.
A classe HttpResponse é responsável por armazenar a resposta da requisição HTTP.

No exemplo, o código está fazendo uma requisição para o webservice "https://www.omdbapi.com/" passando o parâmetro "t=matrix" (que indica que queremos informações sobre o filme "Matrix") e a chave de API "apikey=6585022c". A resposta do webservice é armazenada na variável "response" e, em seguida, é impressa no console utilizando "System.out.println(response.body())".

Espero ter esclarecido suas dúvidas! Se tiver mais alguma pergunta, estou aqui para ajudar."

Todavia, não estava muito claro a usabilidade e aplicabilidade destes códigos/classes/chameComoQuiser. Então, novamente pedi à Luri exemplos e aplicabilidade. O resultado foi este:

"Claro! Vou te mostrar alguns exemplos simples para que você possa entender melhor a aplicabilidade dos códigos utilizados:

  1. Requisição GET básica:
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
        .uri(URI.create("https://api.example.com/data"))
        .build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());

Nesse exemplo, estamos fazendo uma requisição GET para o endpoint "https://api.example.com/data" e imprimindo a resposta no console.

  1. Requisição POST com corpo JSON:
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
        .uri(URI.create("https://api.example.com/data"))
        .header("Content-Type", "application/json")
        .POST(HttpRequest.BodyPublishers.ofString("{\"name\":\"John\",\"age\":30}"))
        .build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());

Nesse exemplo, estamos fazendo uma requisição POST para o mesmo endpoint, porém estamos enviando um corpo JSON com os dados de uma pessoa. A resposta também é impressa no console.

Esses são apenas exemplos básicos, mas a classe HttpClient e a interface HttpRequest oferecem muitas possibilidades para realizar diferentes tipos de requisições HTTP, como PUT, DELETE, HEAD, etc. Além disso, você pode configurar headers, autenticação, timeouts e muito mais.

Espero que esses exemplos tenham ajudado a compreender melhor a aplicabilidade dos códigos utilizados. Se tiver mais dúvidas, é só perguntar!"

Gostaria de compartilhar isso aqui no fórum no intuito de ajudar quem passa por essa mesma situação.

E finalmente, minhas perguntas são:

  1. O código será sempre o mesmo neste tipo de situação/requisição? (Mesmo em outros projetos)
  2. Se é algo que há de se repetir tantas vezes, existe alguma forma de encurtar, comprimir ou mesmo melhorar a legibilidade do código de uma forma mais rápida, intuitiva e moderna? (Algum Framework Talvez)

Gostaria de uma resposta sincera e humana. Desde já, meus agradecimentos.

2 respostas

Apenas complementando.

Fiz estas mesmas perguntas à Luri e ela me respondeu da seguinte maneira:

(Pergunta 1) Não necessariamente. O código pode variar dependendo do contexto e dos requisitos específicos de cada projeto. O exemplo que foi mostrado é apenas uma forma básica de fazer uma requisição HTTP utilizando a classe HttpClient e a interface HttpRequest.

Em projetos reais, é comum que haja variações no código, como adicionar headers personalizados, configurar autenticação, lidar com diferentes tipos de resposta (JSON, XML, etc.), tratar erros e exceções, entre outras coisas.

Além disso, em projetos maiores e mais complexos, é comum utilizar bibliotecas e frameworks que abstraem parte dessa lógica de requisição HTTP, facilitando o desenvolvimento e fornecendo recursos adicionais.

Portanto, é importante entender os conceitos básicos apresentados no exemplo, mas esteja preparado para adaptar o código de acordo com as necessidades específicas de cada projeto.

(Pergunta 2) Sim, existem frameworks e bibliotecas que podem ajudar a encurtar e melhorar a legibilidade do código ao lidar com requisições HTTP. Alguns exemplos populares são:

Spring Framework: O Spring possui um módulo chamado Spring Web que fornece uma abordagem mais simplificada para fazer requisições HTTP. Ele utiliza anotações e recursos de injeção de dependência para facilitar o desenvolvimento. Com o Spring, é possível criar clientes HTTP de forma mais intuitiva e elegante.

Retrofit: O Retrofit é uma biblioteca para Android que simplifica o consumo de APIs REST. Ele permite definir interfaces Java que representam as chamadas à API, e o Retrofit se encarrega de fazer toda a configuração e serialização/desserialização dos dados automaticamente.

OkHttp: O OkHttp é uma biblioteca de cliente HTTP para Java que oferece uma API simples e poderosa para fazer requisições HTTP. Ele é altamente configurável e possui recursos avançados, como cache de respostas, interceptadores e suporte a WebSockets.

Esses são apenas alguns exemplos, mas existem muitas outras opções disponíveis. A escolha do framework ou biblioteca depende das necessidades do projeto e das preferências da equipe de desenvolvimento.

Essas ferramentas podem ajudar a encurtar o código, melhorar a legibilidade e fornecer recursos adicionais para lidar com requisições HTTP de forma mais eficiente e moderna.

solução!

Olá Gabriel!

No exemplo apresentado, a instrutora está utilizando as classes HttpClient, HttpRequest e HttpResponse para fazer requisições HTTP, construir a requisição e armazenar a resposta, respectivamente. Essas classes fazem parte da API de conexão HTTP do Java.

No primeiro exemplo, a instrutora mostra como fazer uma requisição GET básica utilizando o HttpClient e o HttpRequest. No segundo exemplo, ela mostra como fazer uma requisição POST com um corpo JSON. Esses são apenas exemplos básicos, mas a classe HttpClient e a interface HttpRequest oferecem muitas possibilidades para realizar diferentes tipos de requisições HTTP, como PUT, DELETE, HEAD, entre outros. Além disso, é possível configurar headers, autenticação, timeouts e muito mais.

Respondendo às suas perguntas:

  1. O código não será sempre o mesmo em todas as situações/requisições. Ele pode variar de acordo com a API que você está consumindo e o tipo de requisição que você deseja fazer. É importante entender a documentação da API que você está utilizando para saber como construir corretamente a requisição.

  2. Existem frameworks que podem facilitar o trabalho de consumir APIs, como o Spring Framework, que possui módulos específicos para trabalhar com requisições HTTP. O Spring oferece uma abstração mais intuitiva e moderna para lidar com requisições HTTP, facilitando a legibilidade do código. No entanto, é importante lembrar que a escolha de um framework depende das necessidades do seu projeto e do seu conhecimento prévio sobre o framework em questão.

Espero ter esclarecido suas dúvidas! Se tiver mais alguma pergunta, estou aqui para ajudar. Bons estudos!

Espero ter ajudado e bons estudos!