Bom dia a todos Eu segui todos os passos do método do get pelo retro fit com esse link:
http://localhost:8080/cars/lista-modelo?modelo=gol
E mesmo tendo retorno de código 200, não me retornou nada neste método
Mas se for comparar com outras requisições get meus, ele tem esse retorno:
[{"id":1,"name":"Golf","model":"VW","year":2018,"isEligible":false},{"id":2,"name":"Uno","model":"VW","year":2018,"isEligible":true}] //eu criei esse objeto uno para ver se o erro era no outro objeto
Eu não sei porque tem essa diferença de resultado, e pior, como nem o postman e nem o Intellij apontam um erro ou exceção, nem sei por onde começar. Vou colocar o código de vários métodos para ver se encontro o erro:
@RestController
@RequestMapping("/cars")
class CarResource(
private val carService: CarService
) {
//codigo omitido por ser copiado do projeto original e estar funcionando
@GetMapping("/lista-modelo")
fun listByInventory(@RequestParam modelo: String) =
carService.listByInventory(modelo)
}
@Configuration
class CarHttpConfiguration {
private companion object{
const val BASE_URL = "http://localhost:8080/"
}
private fun buildClient() = OkHttpClient.Builder().build()
private fun buildRetroFit() = Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.client(buildClient())
.build()
@Bean
fun carHttpService(): CarHttpService = buildRetroFit().create(CarHttpService::class.java)
}
@Service
interface CarHttpService {
@GET("cars-inventory")
fun getByModel(@Query("model") model: String): Call<List<CarHttp>>
}
object CarHttpToModelConverter {
fun toModel(carsHttp: List<CarHttp>) = carsHttp.map {
carHttp -> Car(
id = Long.MAX_VALUE,
name = carHttp.model,
model = carHttp.make,
year = carHttp.year
).isEligibleToUber()
}
}
@Service
internal class CarService(
private val carRepository: CarRepository,
private val carHttpService: CarHttpService
) : CarService {
//codigo omitido por ser copiado do projeto original e estar funcionando
override fun listByInventory(model: String) =
carHttpService.getByModel(model)
.execute()
.body()?.let(CarHttpToModelConverter::toModel)
}
data class CarHttp (
val make: String,
val model: String,
val year: Long
){
interface CarService {
//codigo omitido por ser copiado do projeto original e estar funcionando
fun listByInventory(modelo:String): List<Car>?
}