A missão que nos foi atribuída consistia em criar ou utilizar uma API utilizando a linguagem de programação Kotlin. Inicialmente, pensei em aplicar a mesma abordagem usada em JavaScript. Após algumas pesquisas, encontrei uma forma bastante semelhante de realizar essa tarefa.
com.example.kotlinapi, adicionei mais dois arquivos Kotlin:
Model.kt: Nesse arquivo, criamos uma data class, que é usada para armazenar informações. O compilador, automaticamente, gera funções úteis, como:
toString() – para exibir os dados como texto.
equals() – para comparar se dois objetos são iguais.
hashCode() – usado em coleções como listas ou mapas.
copy() – permite criar uma cópia do objeto com alterações opcionais.
Dentro dos parênteses da data class, definimos os atributos correspondentes à fruta ou ao retorno da API escolhida.
Vale destacar que todos os atributos são imutáveis (val), ou seja, uma vez definidos, não podem ser alterados.
package com.example.kotlinapi
data class Fruit(
val id: Int,
val name: String,
val roman_name: String,
val type: String,
val description: String,
val filename: String,
val technicalFile: String
)
[
{
"id": "int",
"name": "string",
"roman_name": "string",
"type": "string",
"description": "string",
"filename":"string",
"technicalFile":"string"
}
ApiClient.kt: Nesse arquivo acontece o consumo da API de forma organizada e segura.
1° Temos os imports de classes necessárias do Retrofit(biblioteca muito usada para consumir APIs Rest no Android)
Retrofit → cria a conexão com a APIGsonConverterFactory → transforma JSON em objetos Kotlin@GET → indica que é uma requisição HTTP GETDepois dos imports criamos um object em Kotlin chamada ApiClient, e dentro dela criamos o Retrofit.
private val retrofit = Retrofit.Builder()
.baseUrl("<https://api.api-onepiece.com/v2/>")
.addConverterFactory(GsonConverterFactory.create())
.build()
.build()Ainda dentro do object, nós criamos o seriço da API:
val apiService: ApiService = retrofit.create(ApiService::class.java)
Aqui o Retrofit cria uma implementação dessa interface, ou seja:
Agora fora do object nós criamos uma interface ApiService que define os endpoints da API.
→ Endpoint GET