retrofit 2 @path Vs @query
Je suis nouveau à rénover 2 de la bibliothèque.J'ai lu plusieurs articles pour commencer en tant que débutant, et j'ai réussi à récupérer les données XML à partir de mon API RESTful sans spécification de paramètres.Dans ma méthode, qui a généré la ressource XML est ci-dessous.
@GET
@Path("/foods")
@Produces(MediaType.APPLICATION_XML)
public List<FoodPyramid> getFoodPyramid() {
Session session = HibernateUtil.getSessionFactory().openSession();
trans = session.beginTransaction();
List<FoodPyramid> foodList = session.createQuery("from FoodPyramid").list();
try {
trans.commit();
session.close();
} catch (Exception e) {
session.close();
System.err.println("Food Pyramid fetch " + e);
}
System.err.println("Am in the food modal. . . . . . . .");
return foodList;
}
Maintenant, quand j'ai essayé de passer des paramètres dans l'interface
@GET("user/{username}/{password}")
Call<List<UserCredentail>> getUserOuth(@Query("username") String username, @Query("password") String password);
Il n'a pas pu exécuter,aucune donnée n'a été recevoir par un client . Il m'a fallu une semaine pour tenter d'y remédier en utilisant un paramètre non appel extraites les ressources;
Donc essayé de le changer pour
@GET("user/{username}/{password}")
Call<List<UserCredentail>> getUserOuth(@Path("username") String username, @Path("password") String password);
et il a bien fonctionné. Donc Ma question est: Quand dois-je utiliser @Query
et @Path
Annotation en rénovation 2 ?
source d'informationauteur Mwesigye John Bosco
Vous devez vous connecter pour publier un commentaire.
Considère que c'est l'url:
www.app.net/api/searchtypes/862189/filters?Type=6&SearchText=School
Maintenant, c'est l'appel:
Nous avons donc:
http://www.app.net/api/searchtypes/{Path}/filtres?Type={Query}&Texterecherché={Query}
Les choses qui viennent après ? sont généralement des requêtes.
Ici
username
estpath
variable, etadmin
est variable de requêteDe requête à utiliser pour les paramètres d'URL et avec @Query("mot de passe"), l'URL est :
Chemin d'accès est utilisé pour remplacer l'élément défini dans votre chemin d'accès, comme
@Chemin est utilisé lorsque vous avez des url, ce qui est '/' valeur dynamique après un backword slash.Exemple "http://google.com/index.html/userid. Donc, dans cette url /nom d'utilisateur est dynamique afin d'accéder à cette url de votre demande doit être
@Get("index.html/{idutilisateur}")
Calldata(@Path("userid")int id);
@Requête est utilisé lorsque vous avez une url qui a"? " dynamique de la valeur après un point d'interrogation.Exemple "http://google.com/index.html?userid.So dans cette url ? userid est dynamique afin d'accéder à cette url de votre demande doit être
@Get("index.html")
Calldata(@Query("userid")int id);