【发布时间】:2016-04-10 01:50:45
【问题描述】:
我正在使用 Restlet,但遇到了路由器模板的问题,其模板中的变量包含编码的斜杠。详情如下:
当我使用这条路线时:
/blob/sqlserver/{uniqueid}
然后传递这个(注意 %2F 是 /):
/blob/sqlserver/Refinance-Other%2FFRM%2F660-700%2F4.00-4.50%2Fproperties-4.00-4.50.csv
或者这个:
/blob/sqlserver/Refinance-Other/FRM/660-700/4.00-4.50/properties-4.00-4.50.csv
我得到一个 404
如果我使用这个路由器:
/blob/sqlserver/{purpose}/{type}/{creditscore}/{interestrate}/{file}
然后通过这个:
/blob/sqlserver/Refinance-Other/FRM/660-700/4.00-4.50/properties-4.00-4.50.csv
有效,但我不能这样做,因为我无法控制谁向我发送此 URI,并且变量会改变,所以它必须是编码的斜杠。
为了进一步测试,我也再次尝试了这个模板:
/blob/sqlserver/{uniqueid}
但也使用了 MODE_STARTS_WITH
.setMatchingMode(Template.MODE_STARTS_WITH);
当我这样做时,它确实找到了这个:
/blob/sqlserver/Refinance-Other/FRM/660-700/4.00-4.50/properties-4.00-4.50.csv
但我只得到“Refinance-Other”作为uniqueid下的变量。
但是,编码的斜线仍然不起作用,这似乎很奇怪?为什么它适用于上述带有 MODE_STARTS_WITH 而不是这个 URI 的非编码 URI?:
/blob/sqlserver/Refinance-Other%2FFRM%2F660-700%2F4.00-4.50%2Fproperties-4.00-4.50.csv
【问题讨论】: