2010-09-02 25 views
9

क्या यूआरआई पैरामीटर की चर संख्या को पढ़ने और उन्हें वैरिएबल तर्क (सरणी) या संग्रह के रूप में समझने के लिए जीईटी विधि को कॉन्फ़िगर करना संभव है? मुझे पता है कि क्वेरी पैरामीटर सूची/सेट के रूप में पढ़ा जा सकता है लेकिन मैं उनके मामले में उनके लिए नहीं जा सकता।क्या यूआरआई पैरामीटर की चर संख्या के साथ जेएक्स-आरएस विधि को कॉन्फ़िगर करना संभव है?

उदा .:

@GET 
@Produces("text/xml") 
@Path("list/{taskId}") 
public String getTaskCheckLists(@PathParam("taskId") int... taskId) { 
    return Arrays.toString(taskId); 
} 

अग्रिम

उत्तर

8

धन्यवाद अगर मैं आपके सवाल का सही ढंग से समझ, @Path एनोटेशन पथ घटकों की सूची निर्दिष्ट करने के लिए एक नियमित अभिव्यक्ति ले सकते हैं। उदाहरण के लिए, कुछ:

@GET 
@Path("/list/{taskid:.+}") 
public String getTaskCheckLists(@PathParam("taskid") List<PathSegment> taskIdList) { 
    ...... 
} 

here का एक और व्यापक उदाहरण है।

+0

धन्यवाद, यह शायद सबसे करीब मुझे लगता है कि करने के लिए तो अब मैं बस वहाँ regexp कि संख्या से मेल खाता है और example.com/ws/list के लिए स्लैश लगाने की जरूरत है मिलेगा/1 या example.com/ws/list/1/2/3/4/5/6 – zeratul021

2

मैं इसे उत्तर के रूप में सबमिट नहीं कर रहा हूं क्योंकि यह currently accepted answer पर केवल एक बढ़त मामला है जो मैंने भी उपयोग किया है। मेरे मामले में (जर्सी 1.1 9) /list/{taskid:.+} शून्य चर पैरामीटर के किनारे के मामले के लिए काम नहीं करेगा। RegEx को /list/{taskid:.*} में बदलकर उस पर ध्यान दिया गया। this article देखें (जो लागू होने लगते हैं)।

इसके अलावा, * (बजाय +) को प्रमुखता सूचक कराने के लिए regexp बदलते पर मैं भी रिक्त स्ट्रिंग के मामले के साथ प्रोग्राम के रूप में निपटने के लिए के रूप में मैं एक List<String> में List<PathSegment> अनुवाद होगा (यह मेरा डीबी पहुँच में पारित करने के लिए किया था कोड)।

कारण मैं PathSegment से String से अनुवाद कर रहा हूं कि मैं अपने डेटा एक्सेस लेयर कोड को प्रदूषित करने के लिए javax.ws.rs.core पैकेज से कक्षा नहीं चाहता था।

यहां एक संपूर्ण उदाहरण है:

@Path("/listDirs/{dirs:.*}") 
@GET 
@Produces(MediaType.APPLICATION_JSON) 
public Response listDirs(@PathParam("dirs") List<PathSegment> pathSegments) { 
    List<String> dirs = new ArrayList<>(); 
    for (PathSegment pathSegment: pathSegments) { 
     String path = pathSegment.getPath(); 
     if ((path!=null) && (!path.trim().equals(""))) 
      dirs.add(pathSegment.getPath()); 
    } 
    List<String> valueFromDB = db.doSomeQuery(dirs); 
    // construct JSON response object ... 
} 
संबंधित मुद्दे