在我的 Angular 应用程序中,我有一个$http
用于从服务器检索数据的服务。服务器端点使用 HMAC 身份验证,并期望查询字符串参数在 URL 上按特定顺序排列。
Angular$http
在构建 URL 时对参数进行排序,因此似乎无法指定自定义参数顺序。
这是一个例子:
this.apiCall = function() {
return $http({
method: 'GET',
url: 'http://example.com/url/v1/endpoint',
params: {
'c': 'cdata',
'a': 'adata',
'b': 'bdata'
}
});
};
Angular 会将 URL 构建为http://example.com/url/v1/endpoint?a=adata&b=bdata&c=cdata
,但我需要保留指定的参数顺序,http://example.com/url/v1/endpoint?c=cdata&a=adata&b=bdata
.
我意识到我可以手动将参数附加到 URL 字符串,但这不是很友好,而且它不允许在$http
拦截器中轻松管理。
Angular 可能会对参数进行排序以保持跨浏览器实现的统一行为,因为 ECMAScript 中没有指定对象排序。
无论如何,有没有人知道如何解决对参数进行排序的默认 Angular 行为,以构建一个保留指定参数的 URL?