2016-11-22 11 views
2

Ich lese Post und Dokumente über Retrofit 1 & 2. Ich habe den nächsten Quellcode, um ein Repo von einem Benutzer zu erhalten.So fragen Sie einen Parameter in der Mitte einer URL mit Retrofit

@GET("users/{user}/repos") 
Call<List<GithubRepo>> getRepos(@Path("user") String user); 

In retrofit2 ich sehe, dass jetzt müssen wir @Path mit @Query ändern, aber ich weiß nicht, ob das mit der Methode ist das gleiche. Es ist wie der nächste oder ich muss etwas mehr ändern?

@GET("users/{user}/repos") 
Call<List<GithubRepo>> getRepos(@Query("user") String user); 

Danke

Antwort

3

beide sind verschiedene @Query verwendet wird

, wenn Sie einen Wert in

URL wie www.xxx.com/user=name zuweisen haben (meist @query die gesucht wird Benutzerdaten)

wir so verwenden ....

@GET("users/repos") 
Call<List<GithubRepo>> getRepos(@Query("user") String user); 

und @path verwendet, wenn Sie den Pfad oder URL oder Keyword von URL zu

wie www.xxx.com/sam, www.xxx.com/sushan, etc (meist @path verwendet wird, ändern holen Daten verschiedenen Benutzer)

wir so verwenden ....

@GET("users/{user}/repos") 
Call<List<GithubRepo>> getRepos(@Path("user") String user); //here url changes with the value of String user 

HINWEIS: - @Query am Ende der URL immer kommen. Und @Path wird überall in der URL verwendet

+0

verursacht durch: java.lang.IllegalArgumentException: URL-Abfragezeichenfolge darf keinen replace-Block haben. Für dynamische Abfrageparameter verwenden Sie @ Query.Ich weiß nicht, dann, wie Benutzer-ID zwischen Benutzern einfügen/.../Repos – MAOL

+0

sind Sie sicher über 'Benutzer' in der Mitte der URL, die meisten Zeit Abfrage Ende der URL platziert .. .... Willst du bitte die ganze "RESTFUL API" teilen ..... – sushildlh

+0

Es ist in der Mitte, ist die GitHub Api – MAOL

0

Abfrageparameter auch hinzugefügt werden können.

@GET("group/{id}/users") 
Call<List<User>> groupList(@Path("id") int groupId, @Query("sort") String sort); 

Nichts muss sich ändern.

Verwandte Themen