2012-04-17 9 views
18

जेएक्स-आरएस @QueryParam और @MatrixParam के बीच क्या अंतर है? दस्तावेजों से। Queryparam और matrixparam दोनों विशेष स्थिति में एक संसाधन स्थान कर सकते हैं। तो केस केस अंतर क्या है?जेएक्स-आरएस में क्वेरीपाराम और मैट्रिक्स पैराम के बीच क्या अंतर है?

पुनश्च:

Queryparam:

url ? key=value;

Matrixparam

url; key=value;

उत्तर

13

रूप this Oracle documentation में कहा गया है:

@PathParam और अन्य पैरामीटर के आधार पर एनोटेशन, @MatrixParam, @HeaderParam, @CookieParam, @FormParam@QueryParam रूप ही नियमों का पालन करना। @MatrixParam यूआरएल पथ सेगमेंट से जानकारी निकालता है। @HeaderParam HTTP शीर्षलेखों से जानकारी निकालता है। @CookieParam कुकीज़ से संबंधित HTTP शीर्षलेख में घोषित कुकीज़ से निष्कर्ष निकालें।

उदाहरण (here से तैयार):

@Path("/books") 
public class BookService { 

    @GET 
    @Path("{year}") 
    public Response getBooks(@PathParam("year") String year, 
      @MatrixParam("author") String author, 
      @MatrixParam("country") String country) { 

     return Response 
      .status(200) 
      .entity("getBooks is called, year : " + year 
       + ", author : " + author + ", country : " + country) 
      .build(); 

    } 

} 

यूआरआई पैटर्न और परिणाम निम्न देखें:

  1. यूआरआई पैटर्न: "/ पुस्तकों/2012 /"

    getBooks कहा जाता है, वर्ष: 2012, लेखक: अशक्त, देश: अशक्त

  2. यूआरआई पैटर्न: "/ पुस्तकों/2012; लेखक = andih"

    getBooks कहा जाता है, साल 2012, लेखक: andih, देश: अशक्त

  3. यूआरआई पैटर्न: "/ पुस्तकों/2012; लेखक = andih; देश = जर्मनी"

    getBooks, साल कहा जाता है: 2012, लेखक: andih, देश: जर्मनी

  4. यूआरआई पैटर्न: "/ पुस्तकों/2012; देश = जर्मनी, लेखक = andih"

    getBooks, कहा जाता है साल: 2012, लेखक: andih, देश: जर्मनी

एक के लिए अंतर की व्याख्या भी URL matrix parameters vs. request parameters

+15

अच्छा उत्तर, फिर भी मुझे मैट्रिक्स और क्वेरी के बीच मतभेद नहीं दिख रहे हैं ... – OhadR

+0

आप टिम सिल्वेस्टर के उत्तर में [मैट्रिक्स मैट्रिक्स पैरामीटर बनाम अनुरोध पैरामीटर] में एक मैट्रिक्स पैरामीटर का बहुत अच्छा स्पष्टीकरण पा सकते हैं (http: //stackoverflow.com/questions/2048121/url-matrix-parameters-vs-request-parameters)। लिंक पहले से ही मेरे उत्तर के हिस्से के रूप में प्रदान किया गया था। आपके संक्षिप्त और स्पष्ट उत्तर के लिए – andih

+0

+1। –

5

पर एक नज़र @MatrixParam एनोटेशन यूआरएल औरमें विशेष संसाधन वर्तमान के लिए लागू होगी हो सकता है 10 @QueryParam पूरे अनुरोध यूआरएल पर लागू होगा।

किसी भी सुपरमार्केट के एक उदाहरण लें, तो आप सभी फल जो की तरह type = फल और मूल्य सीमा संतुष्ट अनेक शर्तों हो जाएगा चाहते हैं 300 से शुरू होता है और बाहर की सूची 10 फल मिलान, आप एपीआई डिजाइन नीचे,

लिए जा सकते हैं
http://dev.brandstore.com/inventory/grocery;type=fruits/price;range=300/?limit=10 

उपरोक्त उदाहरण में, पहली मैट्रिक्स परम type=fruits संसाधन में एक ही range=300 पृष्ठांकन limit=10 के लिए क्वेरी परम पूरे अनुरोध यूआरएल को लागू कर रहा है केवल कीमत संसाधन के लिए आवेदन कर रहा है, लेकिन केवल किराने करने के लिए आवेदन कर रहा है। और हां, यदि केवल क्वेरी पैरामीटर का उपयोग किया गया था, तो आप "grocery_type" और "grocery_price" जैसे पैरामीटर के साथ समाप्त हो जाएंगे और आप अनुरोध के भीतर पैरामीटर के इलाके द्वारा स्पष्टता को खो देंगे।

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