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