【问题标题】:How to use @Query in Retrofit? Android Kotlin如何在改造中使用@Query?安卓科特林
【发布时间】:2021-07-23 06:31:27
【问题描述】:

我目前正在尝试制作 ApiInterface。我正在尝试使用查询来操作 API URL。到目前为止,我使用的 URL 是

https://api.themoviedb.org/3/search/movie?api_key={apiKey}&language=en-US&query={query}

上面的url我正在尝试更改“查询”所以我创建了这个界面:

@GET("3/search/movie?api_key=${BuildConfig.MOVIE_TOKEN}&language=en-US&")
fun getMovies(
        @Query("query") query: String
): Call<SearchMovieResponse>

而且效果很好,但是如果URL的大小写是这样的呢:

https://api.themoviedb.org/3/movie/{id}?api_key=7fad718afb38c7fe3fbe9da94e0d54e6

我试图在哪里操纵 {id}。界面是这样的吗?

@GET("3/movie/{id}?api_key=${BuildConfig.MOVIE_TOKEN}")
fun getMovieById(
    @Query("id") id: String
):Call<SearchDetailMovieResponse>

请帮助我了解如何利用注释来修改 API url

【问题讨论】:

    标签: android kotlin retrofit retrofit2


    【解决方案1】:

    您可以为此使用@Path 注解。

    @GET("3/movie/{id}?api_key=${BuildConfig.MOVIE_TOKEN}")
    fun getMovieById(
        @Path("id") id: String
    ):Call<SearchDetailMovieResponse>
    

    其他信息:

    如果你在 url 中间有参数并且想要给出动态值,那么使用 @Path 注释,因为你在 url 中间有 id。

    例如 https://test-api/3/profile。 3 是 url 中间的参数,在这种情况下我们使用 @Path

    如果您在 url 中间没有参数,并且想在 url 末尾使用键值对传递参数,那么最好使用 @Query

    例如 https://test-api/profile?user_id=3 user_id 是键值参数,在这种情况下我们使用@Query。

    注意:据我所知,我是在分享。

    【讨论】:

      【解决方案2】:

      在以下网址的情况下正确使用@Query:

      https://api.themoviedb.org/3/movie/{id}?api_key=7fad718afb38c7fe3fbe9da94e0d54e6

      你需要这样写你的界面

      @GET("3/movie/{id}")
      fun getMovieById(
          @Path("id") id: String,
          @Query("api_key") apiKey: String = BuildConfig.MOVIE_TOKEN
      ):Call<SearchDetailMovieResponse>
      

      有关详细信息,请参阅documentation。

      【讨论】:

        猜你喜欢
        • 2021-07-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-04
        • 2018-08-30
        • 1970-01-01
        • 2022-07-22
        相关资源
        最近更新 更多