我正在开发一个角度应用程序,并且我有一个正在调用服务的控制器。控制器向服务发送一个 URL。该服务向该 URL 发送一个 GET 请求并接收回 JSON。在那个 JSON 中是一个用于 Http 请求的 Uri。我从 JSON 中提取该 Uri,然后将浏览器重定向到它。
从端点返回的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
通话中?在什么情况下我需要? - 有没有办法从调用中的数据对象返回特定属性,
$http .success
这样我就不必调用data.data.uri
我的 Controller 方法?或者我可以在返回的 JSON 有效负载返回到我的控制器之前对其进行修改吗?