私の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
インターセプターで簡単に管理することはできません。
ECMAScript ではオブジェクトの順序が指定されていないため、Angular はおそらくパラメーターを並べ替えて、ブラウザーの実装全体で均一な動作を維持します。
いずれにせよ、パラメータを指定どおりに保持する URL を作成するために、パラメータをソートするデフォルトの Angular 動作を回避する方法を知っている人はいますか?