包含正斜杠的Groovy REST URL映射

时间:2015-01-14 22:15:37

标签: rest url groovy mapping grails-2.0

我在Grails上的Groovy上有一个REST服务;获取数据并对其进行转换的基本服务。它工作正常,除非传入的数据有正斜杠或反斜杠。在这些情况下,浏览器会尝试根据数据导航到目录:

localhost / traverse / map / 321 64第四<<<这很好用 localhost / traverse / map / 321/64 /第四<<<尝试查找localhost / traverse / map / 321/64 / 4th并抛出http状态404

我的urlmapping:

"map/$id" (controller: "map", action: "transform", formats=['text/plain'], method: "GET")

我的控制器。除了类声明和类导入之外别无他法:

def transform = {
  //println params.id
  if (param.id) {
    DataMap dm = new DataMap();
    render dm.hostNodeLookup(params.id)
  }
}

将传递给REST服务的大多数数据都有斜杠,每个“传入数据”的斜杠数量将从1-N变化但我无法弄清楚如何逃避/解析/其他明智的解决这个问题。我已经阅读了on this site但我没有发现它对这个问题太有帮助了。

我无权访问Web服务器来调整编码或浏览器如何呈现URL映射和字符串。数据没有到达控制器,所以我无法解析那里的字符串。有人有想法吗?

1 个答案:

答案 0 :(得分:1)

阅读this post之后,我尝试了它,它就像一个魅力。

在urlmapping文件中,我将此**添加到id变量:

"map/$id**" (controller: "map", action: "transform", formats=['text/plain'], method: "GET")