如何从angularjs调用外部休息服务?

时间:2013-04-18 04:46:17

标签: http rest angularjs



我试图使用$ http服务从角度调用外部REST服务 问题是我被困在$ http.get方法上,因为每当我调用其余服务时,我得到一个status = 0的错误,并且错误回调的数据参数
中没有信息。

到目前为止,我已尝试在端口5000上调用本地服务runnig:$http.get('http://localhost:5000/ping'),这应该返回一个带有属性和值的json对象。另一种方法是调用http://api.flickr.com/services/rest/?method=flickr.test.echo&name=test以期得到答案。对于他们两个我都得到了同样的错误:我之前提到的。

调用来自注入http服务的角度控制器。

谢谢。

3 个答案:

答案 0 :(得分:2)

你试过了吗?

    $http({method: 'GET', url: 'someURL'}).
            success(function(data, status, headers, config) {
                //set view model or do something.

            }).
            error(function(data, status, headers, config) {

            });

答案 1 :(得分:0)

如果有任何参数,请确保您已正确传递参数 一般语法应如下所示:

$http.get('../link/yourApplication/searchBySomeNumber?someNum='+$scope.someNum+'&asOfDate='+asOfDate+'&status=undefined') 
            .success(function(data, status, headers, config) {
                //your code
                console.log('Data return successful');
            })
            .error(function(data, status, headers, config) {
                $scope.status = status;
                alert('Info Error');
                console.log('Group Info Error');
            });

答案 2 :(得分:0)

当$ http返回Promise时,您可以使用.then()方法在解析promise时记录结果,或者在出现任何错误时记录错误:

$http.get('http://localhost:5000/ping')
    .then(function(returnedJson) {
        console.log(returnedJson.data);
    })
    .catch(console.error) // or $log.error if you are using $log from Angular

请注意,通过记录.data对象的returnedJson属性可以获得干净的JSON响应。由于它是Promise,因此它包含与使用Web服务无关的其他信息。

另请注意,您要使用的Web服务也应与Angular应用程序位于同一个域中,否则您可能会遇到跨域错误,除非该服务允许通过公开跨域策略来使用外部网站。

(在此处查找更多信息:Can someone post a well formed crossdomain.xml sample?

如果是这样的话,这篇文章应该会有所帮助:

jQuery AJAX cross domain

希望这会有所帮助。