【发布时间】:2016-01-29 10:54:33
【问题描述】:
我正在使用 Angular 的 Resource 模块来访问 Web API,但我遇到了问题,因为 API 使用 URI 作为主键。
每当我尝试调用此 API 时,将 URI 作为字符串参数传递,我都会收到 400 Bad Request 错误。仔细观察,Resource 转义了 URI 中的所有正斜杠,但没有转义开头的冒号。它正在对如下所示的 URL 执行 GET:http://myserver/api/objects/http:%2F%2Fexample.comk%2FmyURI%2F,这当然是无效的。我也试过用反斜杠转义冒号,但这也不起作用。
如何使 Resource 正确转义我的参数?在拨打电话之前,我尝试用%3A 替换冒号,但这会导致% 再次被编码,返回404 Not Found。
服务处理资源如下所示:
angular.module('adminApp').factory('MyObject', myObject);
function myObject($resource) {
return $resource('/api/objects/:uri');
};
我这样称呼它:
MyObject.get({ uri: myUri }, function(result) {
...
});
【问题讨论】:
-
您是否尝试在冒号前添加反斜杠?
-
@Voreny 是的,最终看起来像这样:
http://myserver/api/objects/http%5C:%2F%2Fexample.comk%2FmyURI%2F,所以没有更好的!
标签: angularjs urlencode url-encoding angular-resource