url - Grails URL 映射和 URL 中的斜杠字符

标签 url grails

我遇到了以下问题:

我的 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 Controller 。

对于另一方,如果我更改 url:

http://myapp.com:9090/CCLASService/clientQuote/get?labcode=BRMIN&cliCode=CL-000236&quoCode=QT-000965%2F1-0

一切正常,我收到了对我的请求的正确 XML 响应。

问题是:为什么当我使用带有编码字符的特定 URL 映射时,返回的是空白屏幕?

最佳答案

URL 映射可以使用 $paramName** 来允许在特定参数内使用斜杠 - 这通常用于 CMS 之类的东西,您希望将整个虚拟路径层次结构映射到单个 Controller ,但它也可能对您有用。

"/api/clientQuote/$labcode/$cliCode/$quoCode**"(controller: "clientQuote") {
  action = [GET: "get"]
}

这将允许 http://myapp.com:9090/CCLASService/api/clientQuote/BRMIN/CL-000236/QT-000965/0-0 即使斜杠没有转义。

关于url - Grails URL 映射和 URL 中的斜杠字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23960388/

相关文章:

php - 如何确定 URL 是否在 PHP 中重定向?

CSS 不适用于端口 8080 上的框架 url

c# - 如何在 Javascript 中确定运行时的页面 URL?

hibernate - 任何有关 `saveAll`的文档?

grails - 禁止使用具有相同用户但使用多个设备的OAuth2登录请求

使用接口(interface)定义spring bean

java - 如何检查 URL 是否被我的防火墙阻止

url - 提供 URL 链接时禁用 Youtube 自动播放

grails - 如果子字符串匹配,则在“字符串”字段中插入链接

grails - 模拟groovy.sql.Sql.call(_,_,_)方法