私はAngularアプリに取り組んでおり、サービスを呼び出すコントローラーがあります。コントローラーは Url をサービスに送信します。サービスはその URL に GET 要求を送信し、JSON を受信します。その JSON は、Http 要求の Uri です。その Uri を JSON から抽出し、ブラウザーをそれにリダイレクトします。
エンドポイントから返されるJSONは次のようになります
{
"profile":"...",
"releases_url":"http://...",
"name":"...",
...,
"uri":"http://the-value-i-want-to-return.com",
...,
}
サービスコード
// Resolves an API endpoint link to its Http counterpart
function resolveJSONEndpointToHttpUrl(JSONEndpointUrl) {
return $http({ method: 'GET', url: JSONEndpointUrl }).
success(function (data, status, headers, config) {
console.log("resolveJSONEndpointToHttpUrl : data");
console.log(data);
//return data;
}).
error(function (data, status, headers, config) {});
}
コントローラーコード
function redirectViaJSONLink(url) {
return musicCollectionService.resolveJSONEndpointToHttpUrl(url).then(function (data) {
console.log("redirectViaJSONLink : data");
console.log(data);
console.log("redirectViaJSONLink : data.data");
console.log(data.data);
console.log("redirectViaJSONLink : data.data.uri");
console.log(data.data.uri);
// Perform redirection
// $window.location.href = data.uri;
});
}
ご覧のとおり、ロギングを行って JSON を分解し、何が返されているか、返されたオブジェクトのプロパティにアクセスする方法を正確に把握しています。
私の質問は次のとおりです。
- 通話
return data;
で必要ないのはなぜですか?$http .success
どのような状況で必要ですか? - Controller メソッドで
$http .success
呼び出す必要がないように、呼び出しでデータ オブジェクトから特定のプロパティを返す方法はありますか?data.data.uri
または、コントローラーに返される前に、返された JSON ペイロードを変更できますか?