为什么我们在“获取请求”中添加查询参数?

时间:2019-01-31 06:10:04

标签: android retrofit2

我对android非常陌生,我正在研究用于网络的Retrofit 2,以发送Get Get we we use Query参数?

4 个答案:

答案 0 :(得分:0)

改造使用注释来定义的键和值转换成适当的格式。使用@Query(“钥匙”)的字符串值注释将添加有名称密钥和相应的字符串值于该请求的URL的查询参数(当然也可以使用其它类型的比串:)。)

实际上,有些API带有端点,使您可以(可选)传递多个查询参数。您要避免像下面这样的服务方法声明,其中对请求参数使用“无尽”选项:

public interface NewsService() {  
    @GET("/news")
    Call<List<News>> getNews(
            @Query("page") int page,
            @Query("order") String order,
            @Query("author") String author,
            @Query("published_at") Date date,
            …
    );
}

您可以使用每个参数的空值调用.getNews服务方法,以使其成为可选参数。改型将忽略空值,并且不将其映射为查询参数。然而,有一个更好的解决方案,工作有对查询参数的各种选项复杂的API端点。不用担心,翻新为您服务!

可以从下面的给定链路探索更多: -

https://futurestud.io/tutorials/retrofit-2-add-multiple-query-parameter-with-querymap

答案 1 :(得分:0)

假设您有以下api可以调用: https://api.themoviedb.org/3/movie/now_playing/api_key=1

因此,为了动态地传递“ api_key”的值,应使用 @Query(“ api_key”)作为:

@GET("movie/now_playing")
Call<MovieData> getMovieData(@Query("api_key") String apiKey);

答案 2 :(得分:0)

没有必要发送带有GET请求的查询参数。这与如何在您要使用的API上配置端点有关。

在设计API(尤其是GET方法)时,可以通过将某些参数指定为查询参数来使它们保持可选。

@GET(“位置”)  响应getUser(@QueryParam(“ name”)字符串名称);

可以被双方调用

/位置

/ location?name = test

查询参数不仅限于GET请求。它也可以与其他方法一起使用,例如DELETE等。

这是与HTTP方法有关的概念

答案 3 :(得分:0)

因此,对于那些可能想要使用Retrofit查询的人来说,这是一种了解它的简单方法。请检查如下....

  • 如果指定@GET(“ Search?one = 5”),则必须使用&附加任何@Query(“ two”),并生成类似Search?one = 5&two = 7的内容。
  • 如果您指定@GET(“ Search”),则必须使用?附加第一个@Query,生成类似于Search?two = 7的内容。
  • 这就是改造的原理。
  • 当您指定@GET(“ Search?”)时,Retrofit认为您已经提供了一些查询参数,并使用&附加了更多查询参数。 删除?,您将获得所需的结果。

    enter String BASE_URL = "https://api.test.com/";
    String API_KEY = "SFSDF24242353434";
    
    @GET("Search") //i.e https://api.test.com/Search?
    Call<Products> getProducts(
    @Query("one") String one, 
    @Query("two") String two,    
    @Query("key") String key
    )
    

结果: https://api.test.com/Search?one=Whatever&two=here&key=SFSDF24242353434