मैं जर्सी जावाआरआरएस में सभी क्वेरी मापदंडों को कैसे पकड़ सकता हूं?


91

मैं एक सामान्य वेब सेवा का निर्माण कर रहा हूं और बाद में पार्स करने के लिए सभी क्वेरी मापदंडों को एक स्ट्रिंग में हथियाने की जरूरत है। मैं यह कैसे कर सकता हूँ?

जवाबों:


163

आप @QueryParam("name")संदर्भ के माध्यम से एक या एक ही परम के माध्यम से सभी तक पहुँच सकते हैं :

@POST
public Response postSomething(@QueryParam("name") String name, @Context UriInfo uriInfo, String content) {
     MultivaluedMap<String, String> queryParams = uriInfo.getQueryParameters(); 
     String nameParam = queryParams.getFirst("name");
}

कुंजी @Context jax-rs एनोटेशन है , जिसका उपयोग किया जा सकता है:

UriInfo, अनुरोध, HttpHeaders, SecurityContext, प्रदाता


क्या हम GET के साथ उपयोग कर सकते हैं?
अच्छा महसूस करें और

33

URI अनुरोध के अप्रकाशित क्वेरी भाग को UriInfoऑब्जेक्ट से प्राप्त किया जा सकता है :

@GET
public Representation get(@Context UriInfo uriInfo) {
  String query = uriInfo.getRequestUri().getQuery();
  ...
}

4

स्वीकृत उत्तर के लिए थोड़ा और जोड़ना। निम्नलिखित तरीके से सभी क्वेरी मापदंडों को प्राप्त करना संभव है, अतिरिक्त पैरामीटर को उस विधि में जोड़े बिना जो कि स्वैगर प्रलेखन को बनाए रखते समय उपयोगी हो।

@Context
private UriInfo uriInfo;

@POST
public Response postSomething(@QueryParam("name") String name) {
     MultivaluedMap<String, String> queryParams = uriInfo.getQueryParameters(); 
     String nameParam = queryParams.getFirst("name");
}

संदर्भ


जब यह काम करता है, तो मैं इसकी सिफारिश नहीं करूंगा। यदि आप कोड कार्यात्मक शुद्ध रख सकते हैं, तो आपको इसे आज़माना चाहिए - यह बेहतर तरीका है।
मार्टग्लूबित्ज़

1
हालांकि सख्ती से सही है, मैं स्वचालित रूप से मापदंडों को लॉग करने के लिए एक सुपरक्लास के साथ इस दृष्टिकोण का उपयोग कर रहा हूं, और यह बहुत अच्छी तरह से काम करता है। प्रत्येक अनुरोध के साथ मापदंडों को पारित करने की तुलना में बहुत क्लीनर। कभी-कभी कार्यात्मक शुद्धता को कुछ सेकंड के लिए दूसरे तरीके से देखने की आवश्यकता होती है जबकि व्यावहारिक प्रोग्रामिंग कीबोर्ड का नियंत्रण लेती है :)
पॉल रसेल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.