我有一个用NASA APOD API创建正确的@GET请求的问题。根据文档,我可以使用"日期"为请求添加一个特定的日期。parameter,例如date=2020-03-21: https://api.nasa.gov/planetary/apod?date=2020-03-21&api_key=DEMO_KEY在这种情况下,一切正常。但是当我试图修改一个请求来加载昨天的照片时,我有一个错误。我必须把昨天的日期传递给"日期"参数,但我不明白怎么做:https://api.nasa.gov/planetary/apod?date=*YESTERDAY_DATE_HERE*&api_key=DEMO_KEY
我试图创建一个LocalDate变量,但我收到一个构建错误:注释参数必须是一个编译时常数
我将感激任何帮助!
我代码:
interface NasaApiService {
val yesterdayDate: LocalDate
get() = LocalDate.now().minusDays(1)
@GET("planetary/apod?date=$yesterdayDate&api_key=" + BuildConfig.NASA_API_KEY)
fun getYesterdayPhoto(): Call<NasaPhoto>
companion object {
private const val BASE_URL = "https://api.nasa.gov/"
fun returnToVmFunction(): NasaApiService {
val retrofit = Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build()
return retrofit.create(NasaApiService::class.java)
}
}
}
您确实只能将编译时常量作为注解的参数传递,而参数化字符串不是编译时常量。使用Retrofit的@Query
参数代替:
@GET("planetary/apod")
fun getYesterdayPhoto(
@Query("date") date: String,
@Query("api_key") apiKey: String,
): Call<NasaPhoto>