使用angularjs为多个HTTP GET请求获取更干净的代码
我一直在思考使用angularjs进行HTTP GET REST调用的3种方法。它们是$http、ngResource和restanglar。我选择了$http,因为它最简单,并且可以生成可读性最好的代码。然而,我的REST电话变得越来越复杂。我需要生成嵌套的HTTP GET请求,并确保请求以正确的顺序运行。如果一个HTTP GET请求失败,整个HTTP GET请求链将停止 代码看起来像这样使用angularjs为多个HTTP GET请求获取更干净的代码,angularjs,rest,http-get,restangular,ngresource,Angularjs,Rest,Http Get,Restangular,Ngresource,我一直在思考使用angularjs进行HTTP GET REST调用的3种方法。它们是$http、ngResource和restanglar。我选择了$http,因为它最简单,并且可以生成可读性最好的代码。然而,我的REST电话变得越来越复杂。我需要生成嵌套的HTTP GET请求,并确保请求以正确的顺序运行。如果一个HTTP GET请求失败,整个HTTP GET请求链将停止 代码看起来像这样 $http.get(url_get1).success(function(data, status, h
$http.get(url_get1).success(function(data, status, headers, config)
{
$http.get(url_get2).success(function(data, status, headers, config)
{
$http.get(url_get3).success(function(data, status, headers, config)
{
//more action
}
}
}
如果HTTP请求链变长,代码将无法读取
使用ngResource或Restanglar会使代码更具可读性和可维护性吗?或者还有其他方法吗?$http.get()
返回承诺
$http.get(url_get1)
.then($http.get(url_get2))
.then($http.get(url_get3))
了解
此外,请检查此答案:$http.get()
返回承诺
$http.get(url_get1)
.then($http.get(url_get2))
.then($http.get(url_get3))
了解
此外,请检查以下答案:您的问题不是get请求,而是更好的编码方式。您需要做的是创建更多的模块化函数,这些函数能够处理传入的数据,并返回您需要的数据。例如:
function dataFromGetA(data){
// modify your first get calls data here to the variable, or url you need for the next call
return $http.get('http://someurl.com/' + data.someKey);
}
function dataFromGetB(data){
return $http.get('http://someotherurl.com/' + data.somethingElse);
}
一旦创建了一组此类函数,它们就可以轻松链接,如下所示:
$http.get(firstUrl)
.then(dataFromGetA)
.then(dataFromGetB);
请注意,我并不是简单地将
$http
调用链接在一起,正如您提到的,您需要以前调用中的数据来计算下一个调用的url。您的问题不是get请求,而是更好的编码方法。您需要做的是创建更多的模块化函数,这些函数能够处理传入的数据,并返回您需要的数据。例如:
function dataFromGetA(data){
// modify your first get calls data here to the variable, or url you need for the next call
return $http.get('http://someurl.com/' + data.someKey);
}
function dataFromGetB(data){
return $http.get('http://someotherurl.com/' + data.somethingElse);
}
一旦创建了一组此类函数,它们就可以轻松链接,如下所示:
$http.get(firstUrl)
.then(dataFromGetA)
.then(dataFromGetB);
请注意,我并不是简单地将
$http
调用链接在一起,正如您提到的,您需要以前调用的数据来计算下一个调用的url。如果您需要确保您的调用以特定的顺序运行,那么我会仔细考虑原因。如果您需要一个请求中的数据来决定如何处理另一个请求中的数据,请将其拉入变量。变量内容需要首先从HTTP GET获取。因此,我认为我无法避免让调用按特定顺序运行。将承诺链接起来,而不是嵌套。使代码更易于阅读和维护如果需要确保调用以特定的顺序运行,那么我会仔细考虑原因。如果您需要一个请求中的数据来决定如何处理另一个请求中的数据,请将其拉入变量。变量内容需要首先从HTTP GET获取。因此,我认为我无法避免让调用按特定顺序运行。将承诺链接起来,而不是嵌套。使代码更易于阅读和维护,这是一个很好的答案。似乎我可以坚持使用$http。我希望我能投票100次。对不起,我选择了另一个答案作为答案。答案很好。似乎我可以坚持使用$http。我希望我能投100票。对不起,我选择了另一个答案作为答案。另一个伟大的答案值得10票!看来我真的能坚持到$http。另一个值得10票的好答案!看起来我真的可以保持$http。