当资源uri有多个子路径时,我有一个问题是查询restful资源:
示例:
.factory('SomeFactory', function ($resource) {
return $resource('/path/subPath/otherSubPath/:id', {}, {
show: { method: 'GET', params: { id: '@id' } }
})
}) ;
当我在控制器中调用SomeFactory.show时,我得到了错误
服务器响应状态为400(错误请求)
这是因为浏览器正在寻找uri:
http://server/path/subPath%2FotherSubPat/id
注意/替换uri中的/(斜杠),我在javascript中尝试了很多技巧来完成这项工作;但唯一的解决方案是添加以下最后一行替换(/// gi,’/’);在angular-resource.js encodeUriSegment方法中.
请告诉我这种方法是否正确.
function encodeUriSegment(val) {
return encodeUriQuery(val, true).
replace(/%26/gi, '&').
replace(/%3D/gi, '=').
replace(/%2B/gi, '+').
replace(/%2F/gi, '/');
}
谢谢 .
最佳答案 好像你已经碰到了在github上打开的这个问题:
https://github.com/angular/angular.js/issues/1388#issue-6979382
建议你采取的方法.就我而言,因为我和你有同样的问题,我更喜欢有多个服务(每个子路径一个)而不是修改angular-resource.js – 我更喜欢不修改核心lib文件,因为任何更新都会擦除那些变化.
希望将有关uri编码的标志添加到Angular中以解决此问题.