无法从$ http.get调用Rest Api

时间:2016-12-22 14:30:04

标签: angularjs

我正在尝试访问我正在处理的REST API。此应用程序的客户端是AngularJS网站。

调用REST API时出现以下错误

  

Http请求配置url必须是字符串或$ sce信任   宾语。收稿日期:   { “方法”: “GET”, “URL”: “http://localhost:51615/api/Call/2/ {\” 请求\ “:\” INIT \ “}” ...}}

我正在使用的代码是:

var json = JSON.stringify({
        Request: 'INIT'
    }),
    req = {
        method: 'GET',
        url: 'http://localhost:51615/api/Call/2/' + json,
        headers: {
            'Content-Type': 'application/json'
        }
    }

console.log('req : ', req)

$sce.trustAsResourceUrl(req.url)
$http.get(req)
    .success(function (response) {
        console.log(response)
    })
    .error(function (error) {
        console.error(error)
    });

错误告诉我$http url必须是一个字符串,但据我所知。那可能是什么问题?

1 个答案:

答案 0 :(得分:1)

req显然是一个对象。请尝试使用req.url。您可以将配置对象(req)作为第二个参数传递为the documentation explains

$http.get(req.url /*String*/, req /*object*/).then()

请注意,不需要告诉angular请求方法,它已经进入$http.get。所以你的代码会像这样工作

var json = JSON.stringify({
    Request: 'INIT'
}),
config = {
    headers: {
        'Content-Type': 'application/json'
    }
},
url = 'http://localhost:51615/api/Call/2/' + json;

$http.get(url, config)
    .then(successCallback, errorCallback);

我也不确定发送字符串的get请求中的application / json标头是否是您想要的,但这是另一个故事。

另一种方法是不使用请求的速记,在这种情况下,您可以将您创建的对象(r​​eq)传递给$http()

$http(req)
    .then(s, e);