2012-01-09 12 views
5

मैं निम्नलिखित बाकी यूआरएल उपयोग करने में सक्षम होना चाहते हैं:जर्सी-आरएस की पथ एनोटेशन में जर्सी का समर्थन डॉलर का संकेत करता है?

पहले यूआरएल ठीक काम करता है। मुझे जेएक्स-आरएस के जर्सी कार्यान्वयन का उपयोग करके $ गिनती यूआरएल में परेशानी हो रही है।

यहां संसाधन के लिए कोड है।

@Path("/helloworld") 
public class HelloWorldResource { 
    @GET 
    @Produces("text/plain") 
    public String getClichedMessage() { 
     return "Hello World!"; 
    } 

    @GET 
    @Path("\\$count") 
    @Produces("text/plain") 
    public String getClichedMessage(
      @PathParam("\\$count") String count) { 

     return "Hello count"; 
    } 
} 

मैं भी दोनों @Path और @PathParam लेकिन है कि या तो काम नहीं किया में "$ गिनती" की कोशिश की है।

नोट: यदि मैं ऊपर दिए गए सभी कोड से डॉलर का चिह्न हटा देता हूं तो यह यूआरएल लोकलहोस्ट के लिए ठीक काम करता है: 99 8 9/helloworld/count। हालांकि मुझे यूआरएल में होने वाले डॉलर के संकेत की आवश्यकता है क्योंकि यह ओडाटा उत्पादक एप्लीकेशन होगा।

+1

मुझे पूरा यकीन है कि यूआरएल एन्कोडिंग स्पेक के भीतर $ साइन अर्थपूर्ण अर्थ है। मैं कल्पना नहीं कर सकता कि आप इसे बिना किसी एन्कोडिंग के नियमित URL में उपयोग कर सकते हैं। – Perception

+1

एन्कोडिंग के बिना यूआरएल में डॉलर का उपयोग कानूनी है। इसका उपयोग ओपन डेटा प्रोटोकॉल में किया जाता है, जो एक आराम आधारित प्रोटोकॉल है। देखें [लिंक] (http://www.odata.org/developers/protocols/uri-conventions) – Jerome

उत्तर

3

मिले के साथ काम करने के लिए मिलता नहीं किया जा सका कोशिश कर रहे हैं। एक चरित्र वर्ग में डॉलर के हस्ताक्षर को चाल चलाना था।

@GET 
@Path("{count : [$]count(/)?}") 
@Produces("text/plain") 
public String getClichedMessageCount(
     @PathParam("count") String count) { 

    return "Hello count"; 
} 

उपर्युक्त निम्नलिखित यूआरएल से मेल खाता है।

  • स्थानीय होस्ट: 9998/HelloWorld/$
  • स्थानीय होस्ट गिनती: 9998/HelloWorld/$ गिनती/
  • स्थानीय होस्ट: 9998/HelloWorld/$ गिनती $ फिल्टर = blah
  • स्थानीय होस्ट: 9998/HelloWorld/$ गिनती /? $ फ़िल्टर = ब्ला
+0

बहुत बहुत धन्यवाद !!! मैंने पूरी सुबह ऐसा करने की कोशिश की है। – Montecarlo

1

डॉलर संकेत यूआरएल में विशेष वर्ण हैं, और इस तरह के रूप में एन्कोड किए जाने की जरूरत है, मुझे डर लग रहा:

http://www.blooberry.com/indexdot/html/topics/urlencoding.htm

चरित्र आप देख रहे हैं% 24 है, अगर आप रुचि रखते हैं , यद्यपि यदि आप जावा में हैं, तो java.net.URI कक्षा पर पढ़ना इसके लायक हो सकता है। मैंने जर्सी के साथ नहीं खेला है, लेकिन जावा यहां आपके लिए कड़ी मेहनत करने में सक्षम है।

+1

डॉलर चिह्न को एन्कोड करना अनिवार्य नहीं है। यूआरआई आरएफसी, आरएफसी 3 9 86 [¹] (http: // टूल्स) में डॉलर के चिह्न को आरक्षित चरित्र के रूप में पहचाना जाता है।ietf.org/html/rfc3986#section-2.2 "आरएफसी 3 9 86 सेकेंड 2.2") क्योंकि इसका कुछ विशिष्ट यूआरआई योजनाओं (विशेष रूप से 'गोफर:') के लिए विशेष अर्थ है। 'Http:' यूआरआई योजना में इसका कोई विशेष अर्थ नहीं है। – MetaEd

+0

रोहाक, मेरा मानना ​​है कि मेटाएड सही है। एक अतिरिक्त-आधारित प्रोटोकॉल के लिए [ओपन डेटा प्रोटोकॉल] (http://www.odata.org/developers/protocols/uri-conventions) देखें जो यूआरएल में डॉलर के संकेत का भारी उपयोग करता है। – Jerome

+0

आह, ठीक है, तो मेरी गलती! आगे के मुद्दों से बचने के लिए शायद यह अभी भी यूआरआई को एन्कोड करने योग्य है। – Rohaq

0

आप @Path

@GET 
@Path("/$count") 
@Produces("text/plain") 
public String getClichedMessage(
     @PathParam("\\$count") String count) { 

    return "Hello count"; 
} 

में गलत स्लैश का उपयोग कर रहे अलावा कि PathParam उपयोग करने के लिए सही तरीका नहीं है। आप मूल्य/HelloWorld के बाद आप निम्नलिखित

@GET 
@Path("/{$count}") 
@Produces("text/plain") 
public String getClichedMessage(
     @PathParam("$count") String count) { 

    return "Hello count"; 
} 

संपादित करना चाहिए पुनः प्राप्त करने के लिए यह एक जवाब $

@Path("count") // works 
@Path("/count") // works 
@Path("\\count") // does not work 
@Path("$count") // does not work 
@Path("/$count") // does not work 
+0

हाय माइकल। आपके द्वारा सुझाए गए पहले कोड उदाहरण का प्रयास किया लेकिन यह काम नहीं किया। दूसरा उदाहरण लागू नहीं है क्योंकि मुझे शाब्दिक "$ गिनती" स्ट्रिंग से मिलान करने की आवश्यकता है। – Jerome

+0

@ जेरोम आप सही हैं, यह अभी भी स्लैश को ठीक करने के बाद काम नहीं करता है। –

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