我遇到了以下问题:
My Grails(2.2.0)应用程序具有以下URL映射:
"/api/clientQuote/$labcode/$cliCode/$quoCode"(controller: "clientQuote") {
action = [GET: "get"]
}
我们假设以下值:
$labcode = BRMIN
$cliCode = CL-000236
$quoCode = QT-000965/0-0
由于$ quoCode具有斜杠字符,因此必须将其替换为%2F。这样,可能的URL可能是:
http://myapp.com:9090/CCLASService/api/clientQuote/BRMIN/CL-000236/QT-000965%2F0-0
当我将此URL放在任何浏览器中时,会显示一个空白屏幕作为返回。这很奇怪,因为请求甚至没有到达我的Grails控制器。
另一方面,如果我更改了网址:
一切正常,我收到了对我的请求的正确XML响应。
问题是:为什么当我使用特定的URL映射与编码字符时,我收到一个空白屏幕作为返回?
答案 0 :(得分:6)
URL映射可以使用$paramName**
来允许特定参数中的斜杠 - 这通常用于CMS,您希望将整个虚拟路径层次结构映射到单个控制器,但它可能有用你的情况也是如此。
"/api/clientQuote/$labcode/$cliCode/$quoCode**"(controller: "clientQuote") {
action = [GET: "get"]
}
即使没有斜线转义,这也允许http://myapp.com:9090/CCLASService/api/clientQuote/BRMIN/CL-000236/QT-000965/0-0
。