java - @PathVariable SpringBoot में URL में स्लैश के साथ




rest spring-boot (2)

यह कोड पूरा पथ प्राप्त करता है:

@RequestMapping(value = "/modules/{moduleBaseName}/**", method = RequestMethod.GET)
@ResponseBody
public String moduleStrings(@PathVariable String moduleBaseName, HttpServletRequest request) {
    final String path =
            request.getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE).toString();
    final String bestMatchingPattern =
            request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE).toString();

    String arguments = new AntPathMatcher().extractPathWithinPattern(bestMatchingPattern, path);

    String moduleName;
    if (null != arguments && !arguments.isEmpty()) {
        moduleName = moduleBaseName + '/' + arguments;
    } else {
        moduleName = moduleBaseName;
    }

    return "module name is: " + moduleName;
}

मुझे SpringBoot एप्लिकेशन में @PathValable का उपयोग करते हुए यूआरएल से पैरामीटर प्राप्त करना होगा। ये पैरामीटर अक्सर स्लैश होते हैं मेरा नियंत्रण है कि उपयोगकर्ता यूआरएल में किस प्रकार प्रवेश करेगा, तो मैं उसे जो कुछ भी दर्ज किया है, उसे प्राप्त करना चाहूंगा और फिर मैं इसके साथ संभाल सकता हूं।

मैंने पहले से ही सामग्री और उत्तरों के बारे में पहले से ही देखा है, मुझे नहीं लगता है कि मेरे लिए अच्छा समाधान है कि उपयोगकर्ताओं को किसी तरह प्रवेश करने वाले पैरामोड को एन्कोड करना है

स्प्रिंगबूट कोड सरल है:

@RequestMapping("/modules/{moduleName}")
@ResponseBody
public String moduleStrings (@PathVariable("moduleName") String moduleName) throws Exception {

  ...

}

इसलिए उदाहरण के लिए यूआरएल निम्नलिखित होगा:

http://localhost:3000/modules/...

मुद्दा यह है कि पैरामीटर मॉड्यूल में अक्सर स्लैश होते हैं उदाहरण के लिए,

metadata-api\cb-metadata-services OR
app-customization-service-impl\\modules\\expand-link-schemes\\common\\app-customization-service-api

तो एक उपयोगकर्ता definetely दर्ज कर सकते हैं:

http://localhost:3000/modules/metadata-api\cb-metadata-services

क्या यूआरएल ने / मॉड्यूल / के बाद यूआरएल में जो कुछ भी दर्ज किया है उसे सब कुछ हासिल करना संभव है?

अगर कोई मुझे बताए कि इस तरह के मुद्दे को संभालने के लिए अच्छे तरीके क्या हैं


 @RequestMapping("/modules/**")




path-variables