ユーザーのプロファイルを更新するためにサービス層のエンドポイントに POST する場合、要求ペイロード (クライアントからの必要な変更を含むプロファイル) から特定の値を削除し、それらを応答ペイロード (からの更新されたプロファイル) に再アタッチする必要があります。サーバー)。私は現在、次のように、 Angular のrequest および response トランスフォーマーを使用して動作を実行しています。
myService.updateProfile = function (profile) {
return $http({
method: 'POST',
withCredentials: true,
url: root + 'users/profile',
data: profile,
transformRequest : requestTransformer,
transformResponse : responseTransformer
});
};
// the map used during transformation below
var myMap = {
0: 'foo',
1: 'bar',
2: 'etc'
};
// prependTransform() and appendTransform() are similar to the example provided in Angular transformer docs here:
// https://docs.angularjs.org/api/ng/service/$http#overriding-the-default-transformations-per-request
var requestTransformer = httpTransformer.prependTransform($http.defaults.transformRequest, function(profileRequest) {
profileRequest.myKey = myMap.indexOf(profileRequest.myValue);
delete profileRequest.myValue;
return profileRequest;
});
var responseTransformer = httpTransformer.appendTransform($http.defaults.transformResponse, function(profileResponse) {
profileRequest.myValue = myMap[profileRequest.myKey];
delete profileRequest.myKey;
return profileResponse;
});
デフォルトのリクエスト トランスフォーマーにトランスフォーマーを追加し、デフォルトのレスポンス トランスフォーマーにトランスフォーマーを追加します。私の質問は、これを行うためのより良い方法はありますか? ここに記載されているように、代わりにインターセプターを使用している可能性がありますか? もしそうなら、どのように?