我在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映射和字符串。数据没有到达控制器,所以我无法解析那里的字符串。有人有想法吗?
答案 0 :(得分:1)
阅读this post之后,我尝试了它,它就像一个魅力。
在urlmapping文件中,我将此**添加到id变量:
"map/$id**" (controller: "map", action: "transform", formats=['text/plain'], method: "GET")