2016-06-08 11 views
10

बनाम 2 library.I कई लेख पढ़ा अभी शुरुआत के रूप में शुरू करने के लिए और मैं parameters.In मेरी विधि है कि XML उत्पन्न निर्दिष्ट किए बिना मेरी RESTful API से XML डेटा लाने में कामयाब रहे पुनः स्थापित करने के लिए नया हूँ संसाधन नीचे है।पुराना वापस 2 @path @query

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

अब जब मैं इंटरफ़ेस

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

यह चलाने में विफल रहा है में पैरामीटर पारित करने के लिए करने की कोशिश की, कोई डेटा एक ग्राहक द्वारा प्राप्त किया गया था। मुझे इसे ठीक करने की कोशिश करने में एक सप्ताह लग गया, हालांकि गैर पैरामीटर कॉल का उपयोग करके संसाधनों को प्राप्त किया गया; तो इसे

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

में बदलने की कोशिश की और यह ठीक काम किया। तो मेरा सवाल है: मुझे रेट्रोफिट 2 में @Query और @Path एनोटेशन का उपयोग करने की आवश्यकता कब है?

उत्तर

36

पर विचार करें इस यूआरएल है:

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

तो हमने::

www.app.net/api/searchtypes/

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

अब इस कॉल है {पथ}/फिल्टर? प्रकार = {query} & सर्चटेक्स्ट = {क्वेरी}

के बाद आने वाली चीजें? आमतौर पर प्रश्न हैं।

1

क्वेरी URL पैरामीटर के लिए और ("पासवर्ड") @query के साथ प्रयोग है URL होना चाहिए:

user/john?password=**** 

पथ

user/{username} 
7
@GET("/user/{username}?type={admin}") 
की तरह, आइटम अपने पथ में परिभाषित को बदलने के लिए इस्तेमाल होता है

यहाँ usernamepath चर रहा है, और admin क्वेरी चर

०१२३५१६४१०६१ है
@GET("/user/{username}?type={admin}") 
void getUserOuth(@Path("username") String username, @Query("admin") String type) 
+0

@ पॉल मुझे इसका प्रयोग करने दें। धन्यवाद –

0

@ पैथ का उपयोग तब किया जाता है जब आपके पास यूआरएल होता है जिसमें बैकवर्ड स्लैश के बाद गतिशील मान होता है। उदाहरण "http://google.com/index.html/userid। तो इस यूआरएल में/userid तो गतिशील इस यूआरएल का उपयोग करने की है आपके अनुरोध @Get ("index.html/{userid}") होना चाहिए Calldata (@Path ("उपयोगकर्ता id") पूर्णांक आईडी);

@query आप एक यूआरएल जो है जब प्रयोग किया जाता है '?' एक सवाल mark.Example के बाद एक गतिशील मान "((@query Calldata उपयोगकर्ता id") पूर्णांक आईडी) "(index.html)"? http://google.com/index.html?userid.So इस यूआरएल में userid तो गतिशील इस यूआरएल आपके अनुरोध @Get होना चाहिए तक पहुँचने के लिए है ";

संबंधित मुद्दे