library implementar example ejemplo java android rest retrofit2

java - implementar - retrofit 2 @path Vs @query



retrofit post (4)

Soy nuevo en la actualización de 2 bibliotecas. Leí varios artículos para comenzar como principiante y logré obtener datos XML de mi API RESTful sin especificar parámetros. En mi método que generó el recurso XML se encuentra a continuación.

@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; }

Ahora cuando intenté pasar el parámetro en la interfaz

@GET("user/{username}/{password}") Call<List<UserCredentail>> getUserOuth(@Query("username") String username, @Query("password") String password);

No se pudo ejecutar, ningún cliente recibió datos. Me tomó una semana intentar arreglarlo usando una llamada sin parámetros para recuperar los recursos; Así que traté de cambiarlo a

@GET("user/{username}/{password}") Call<List<UserCredentail>> getUserOuth(@Path("username") String username, @Path("password") String password);

y funcionó bien. Entonces, mi pregunta es: ¿cuándo necesito usar @Query y @Path Annotation en la modificación 2?


@Path se usa cuando tiene una URL que tiene un valor dinámico ''/'' después de una barra invertida. Ejemplo: http://google.com/index.html/userid . Por lo tanto, en esta URL / ID de usuario es dinámico, por lo tanto, para acceder a esta URL. la solicitud debe ser @Get ("index.html / {userid}") Calldata (@Path ("userid") int id);

@Query se usa cuando tienes una URL que tiene ''?'' valor dinámico después de un signo de interrogación. Ejemplo " http://google.com/index.html?userid.So en este url? el ID de usuario es dinámico, por lo que para acceder a este url su solicitud debe ser @Get (" index.html ") Calldata (@Query ("userid") int id);


Considera que esta es la url:

www.app.net/api/searchtypes/862189/filters?Type=6&SearchText=School

Ahora esta es la llamada:

@GET("/api/searchtypes/{Id}/filters") Call<FilterResponse> getFilterList(@Path("Id") long customerId, @Query("Type") String responseType, @Query("SearchText") String searchText);

Entonces tenemos:

www.app.net/api/searchtypes/ {Path} / filters? Type = {Query} & SearchText = {Query}

Cosas que vienen después del ? suelen ser consultas.


La consulta se usa para los parámetros de la URL y con @Query ("contraseña") la URL debe ser:

user/john?password=****

La ruta se usa para reemplazar el elemento definido en su ruta, como

user/{username}


Por ejemplo:

@GET("/user/{username}?type={admin}")

Aquí el username es la variable de path , y el type es la variable de consulta

@GET("/user/{username}?type={admin}") void getUserOuth(@Path("username") String username, @Query("type") String type)