Je suis novice dans la modernisation de la bibliothèque 2. J'ai lu plusieurs articles pour commencer en tant que débutant et j'ai réussi à récupérer les données XML de mon API RESTful sans spécifier de paramètres.
@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 le paramètre dans l'interface
@GET("user/{username}/{password}")
Call<List<UserCredentail>> getUserOuth(@Query("username") String username, @Query("password") String password);
L'exécution a échoué, aucune donnée n'a été reçue par un client. Il m'a fallu une semaine pour essayer de résoudre ce problème en utilisant un appel non paramétrique pour récupérer les ressources.
@GET("user/{username}/{password}")
Call<List<UserCredentail>> getUserOuth(@Path("username") String username, @Path("password") String password);
et cela a bien fonctionné. Ma question est donc la suivante: quand dois-je utiliser les annotations @Query
et @Path
dans la modification 2?
Considérez ceci est l'URL:
www.app.net/api/searchtypes/862189/filters?Type=6&SearchText=School
Maintenant, c'est l'appel:
@GET("/api/searchtypes/{Id}/filters")
Call<FilterResponse> getFilterList(@Path("Id") long customerId,
@Query("Type") String responseType,
@Query("SearchText") String searchText);
Donc nous avons:
www.app.net/api/searchtypes/ {Path} / filtres? Type = {Requête} & SearchText = {Requête}
Les choses qui viennent après le? sont généralement des requêtes.
Par exemple:
@GET("/user/{username}?type={admin}")
Ici username
est la variable path
et type
est la variable de requête
@GET("/user/{username}?type={admin}")
void getUserOuth(@Path("username") String username, @Query("type") String type)
La requête est utilisée pour les paramètres d'URL et avec @Query ("mot de passe"), l'URL devrait être:
user/john?password=****
Path est utilisé pour remplacer un élément défini dans votre chemin, comme
user/{username}
@Path est utilisé lorsque l'URL a la valeur dynamique '/' après un backword slash.Example " http://google.com/index.html/userid . Donc, dans cette url/userid est dynamique pour accéder à cette URL votre demande doit être @ Get ("index.html/{userid}") Calldata (@Path ("userid") int id);
@Query est utilisé quand vous avez une URL qui a '?' valeur dynamique après un point d'interrogation.Exemple " http://google.com/index.html?userid.So dans cette URL? userid est dynamique. Pour accéder à cette URL, votre demande doit être @ Get ( "index.html") Calldata (@Query ("IDutilisateur") id id);
Les annotations @Path sont utilisées pour classer les paramètres à votre guise. Et défini l'ordre dans l'URL.
@GET("user/{username}/{password}")
Call<List<UserCredentail>> getUserOuth(@Path("username") String username, @Path("password") String password);
@Query annotation ordre automatique des paramètres et ajouté avec url, y compris "?" symbole.
@GET("user")
Call<List<UserCredentail>> getUserOuth(@Query("username") String username, @Query("password") String password);