我正在使用Angular的资源模块访问Web API,但由于API使用URI作为主键,所以遇到了问题。冒号不在资源参数中被URL编码
每当我尝试打电话给这个API,传入一个URI作为字符串参数,我得到400 Bad Request
错误。经过仔细观察,Resource在URI中转义所有正斜杠,而不是在开始时转义冒号。它正在对一个如下所示的URL进行GET:http://myserver/api/objects/http:%2F%2Fexample.comk%2FmyURI%2F
,这当然是无效的。我也尝试用反斜杠转义冒号,但这也不起作用。
我该如何让资源正确逃避我的参数?在拨打电话之前,我已尝试用%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
@Voreny是的,它看起来像这样:'http:// myserver/api/objects/http%5C:%2F%2Fexample.comk%2FmyURI%2F',所以没有更好的! – Mourndark