DEV Community

Cover image for HTTP4K como cliente HTTP
Lissa Ferreira for Kotlinautas

Posted on • Updated on

HTTP4K como cliente HTTP

Kotlinautas

Esse conteúdo é oferecido e distribuído pela comunidade Kotlinautas, uma comunidade brasileira que busca oferecer conteúdo gratuito sobre a linguagem Kotlin em um espaço plural.

capa Kotlinautas

HTTP4K

HTTP4K é uma biblioteca feita em Kotlin para receber e fazer requisições HTTP. A principal vantagem do HTTP4K para criar servidores e clientes HTTP é que com poucas linhas conseguimos ter o básico de uma aplicação pronta.

Materiais

Será necessário ter o IntelliJ instalado na máquina e um conhecimento básico sobre a linguagem Kotlin.

Criando o projeto

Abra seu IntelliJ no menu inicial e clique em New Project:

botão New Project no menu inicial do IntelliJ

Depois, selecione a opção Kotlin DSL build script, selecione também a opção Kotlin/JVM, e opicionalmente remova a primeira opção Java. Essa opção não vai mudar em nada, pois ela dá suporte do Gradle á linguagem Java, mas apenas iremos usar Kotlin.

Após isso, clique em Next e escreva o nome do projeto e a localização na sua máquina. Essas duas opção são completamente pessoais, caso não tenha nenhuma ideia, coloque algo como http4k apenas como identificação.

Agora, com o projeto aberto, vá ao aquivo build.gradle.kts e vamos adicionar as dependências do HTTP4K, com a seção dependencies ficando assim:

dependencies {
    implementation(platform("org.http4k:http4k-bom:4.14.1.0"))
    implementation("org.http4k:http4k-core")
}
Enter fullscreen mode Exit fullscreen mode

Agora, clique no elefante no canto superior direito para carregar as alterações no Gradle.

Elefante do Gradle no canto superior direito

Após isso, poderemos começar a programar. Você pode criar um arquivo em src/main/kotlin/ chamado main.kt para ser o arquivo principal da aplicação.

Mas com qualquer nome de arquivo, como você irá usar as corotinas, sempre se lembre de importar a biblioteca de corotinas no começo do arquivo:

import org.http4k.client.JavaHttpClient
import org.http4k.core.HttpHandler
import org.http4k.core.Method
import org.http4k.core.Request
Enter fullscreen mode Exit fullscreen mode

Criando um cliente HTTP

Para enviar uma requisição HTTP, e mostrar o resultado dessa requisição na tela, temos o código de exemplo abaixo:

fun main() {
    val requisição = Request(Method.GET, "https://xkcd.com/info.0.json")
    val cliente: HttpHandler = JavaHttpClient()
    val respostaRequisição = cliente(requisição)

    println(respostaRequisição)
}
Enter fullscreen mode Exit fullscreen mode
  • Usamos uma classe Request para criar um objeto que represente a requisição. Nesse objeto, passamos o método e a URL dessa requisição;
  • Criamos uma variável cliente que recebe um cliente nativo do HTTP4K, que é o JavaHttpClient;
  • Executamos a requisição com cliente(requisição), guardando todos os dados da resposta dessa requisição na variável respostaRequisição;
  • Mostramos o resultado dessa requisição na última linha com println;

Executando esse código, teremos todos os dados sobre a resposta dessa requisição na tela:

HTTP/1.1 200
accept-ranges: bytes
age: 0
cache-control: max-age=300
connection: keep-alive
content-length: 382
content-type: application/json
date: Wed, 06 Oct 2021 02:26:36 GMT
etag: "615bc0f5-17e"
expires: Wed, 06 Oct 2021 00:56:13 GMT
last-modified: Tue, 05 Oct 2021 03:05:25 GMT
server: nginx
vary: Accept-Encoding
via: 1.1 varnish
x-cache: HIT
x-cache-hits: 1
x-served-by: cache-gig17025-GIG
x-timer: S1633487196.752074,VS0,VE392

{"month": "10", "num": 2524, "link": "", "year": "2021", "news": "", "safe_title": "Comet Visitor", "transcript": "", "alt": "It's a myth that the Great Wall of China is the only human-made structure visible from space--there are LOTS of structures for us to feel self-conscious about!", "img": "https://imgs.xkcd.com/comics/comet_visitor.png", "title": "Comet Visitor", "day": "4"}
Enter fullscreen mode Exit fullscreen mode

Podemos acessar algumas informações usando as propriedades contidas dentro da variável respostaRequisição, caso você queira pegar o status da requsição, pode ser usada a opção respostaRequisição.status:

fun main() {
    val requisição = Request(Method.GET, "https://xkcd.com/info.0.json")
    val cliente: HttpHandler = JavaHttpClient()
    val respostaRequisição = cliente(requisição)

    println(respostaRequisição.status)
}
Enter fullscreen mode Exit fullscreen mode

O resultado desse código será o status da resposta da requisição:

200
Enter fullscreen mode Exit fullscreen mode

A mesma coisa pode ser feita para outras propriedades, como o corpo da resposta (respostaRequisição.body), os cabeçalhos da resposta (respostaRequisição.headers),etc.

Finalização

Esse é o básico sobre corotinas no Kotlin. Há muito mais detalhes e conteúdos que podem ser abordados, mas para um artigo introdutório isso já é suficiente.

Obrigada por ler 💙

Discussion (0)