2012-04-14 20 views
12

मैं Netbean 7.1.1 Glassfish 3.1.2REST खाली पथ पैरामीटर कैसे पास करें?

का उपयोग कर REST वेब एप्लिकेशन बनाने रहा हूँ मैं 2 यूआरएल है:

"http://myPage/resource/getall/name" (get some data by name) 

"http://myPage/resource/getall" (get all data) 

ग्राहक पहले यूआरएल का उपयोग कर अनुरोध भेजता है, नीचे सर्वलेट कहा जाता है और कुछ प्रक्रिया है।

@Path("getall/{name}") 
@GET 
@Produces("application/json") 
public Object Getall(@PathParam("name") String customerName) { 
     //here I want to call SQL if customerName is not null. is it possible??? 
} 

लेकिन मैं इस सर्वलेट को कॉल करने के लिए दूसरा यूआरएल भी चाहता हूं।

मैंने सोचा कि सर्वलेट कहा जाएगा और मैं सिर्फ ग्राहक नाम == शून्य की जांच कर सकता हूं और फिर विभिन्न एसक्यूएल को कॉल कर सकता हूं।

लेकिन जब ग्राहक दूसरे यूआरएल (यानी पथ पैरामीटर के बिना) का अनुरोध भेजता है, तो सर्वलेट को नहीं कहा जा रहा है क्योंकि यूआरएल में {name} पथ पैरामीटर नहीं है।

क्या दूसरे यूआरएल को कॉल करना और ऊपर दिए गए सर्वलेट को आमंत्रित करना संभव नहीं है?

http://myPage/resource/getall?name=value 

शायद मैं यह पार्स और देख सकते हैं "value" रिक्त है फिर उसके अनुसार कार्रवाई करनी ..

उत्तर

26

आप के लिए एक रेगुलर एक्सप्रेशन निर्दिष्ट कर सकते हैं:

एक वैकल्पिक मैं के बारे में सोच सकते हैं query parameter उपयोग करने के लिए है आपका पथ पैरामीटर (देखें 2.1.1. @Path)।

आप .* मैचों दोनों खाली और गैर खाली नाम तो अगर आप लिखने का उपयोग करते हैं:

@GET 
@Path("getall/{name: .*}") 
@Produces("application/json") 
public Object Getall(@PathParam("name") String customerName) { 
     //here I want to call SQL if customerName is not null. is it possible??? 
} 

यह दोनों "http: // myPage/संसाधन/getall" से मेल खाएगा और "http: // myPage/संसाधन/getall/नाम "।

+0

धन्यवाद, मैंने ऊपर की कोशिश की और पूरी तरह से काम किया! –

+0

हाय! क्या होगा यदि स्थिति अगला है: "http: // myPage/resource/getall/name? Type = json" "http: // myPage/resource/getall? Type = json" उपरोक्त समाधान काम नहीं करता है। – Andrew

+0

@Andrew कृपया एक नया प्रश्न बनाएं। किसी भी संदर्भ के बिना सवाल का जवाब देना संभव नहीं है। – andih

-2
@GET 
@Path("getall{name:(/[^/]+?)?}") 
@Produces("application/json") 
public Object Getall(@PathParam("name") String customerName) { 
    //here I want to call SQL if customerName is not null. is it  

possible??? 
    } 
+0

नाम के साथ या बिना दोनों से मेल खाता है, –

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