我有这个要求:
$http({
method: 'get',
url: '/api/items/',
params: {a: 1, b: 2, c: 3}
}).success(function (response) {
console.log(response);
}).error(function (err) {
console.log(err);
});
有没有办法,在请求发出后(在回调或其他方面)获取用于发出请求的URL?
我想要输出:
http://www.example.org/api/items?a=1&b=2&c=3
Here使用jquery完成同样的事情。
答案 0 :(得分:2)
成功处理程序获取4个传递给它的参数:
$http
.get({ url: '/someUrl', params: { q: 3 } })
.success(function(data, status, headers, config) {});
第四个参数config
具有以下属性:
{
method: "GET",
url: {
url: '/someUrl',
params: {
q: 3
}
}
}
您可以使用window.location.origin
获取基本网址并构建一个简单的函数来将它们连接在一起。
此函数应产生预期的响应:
var baseUrl = window.location.origin;
var query = [];
Object.keys(config.url.params || {}).forEach(function (key) {
var val = config.url.params[key];
query.push([key, val].join('=')); // maybe url encode
});
var queryStr = query.join('&');
var fullPath = baseUrl + config.url.url + '?' + queryStr;
不幸的是,只有参数以上述格式传递,此功能才有效。如果以不同的格式传递它们,则必须稍微修改此函数。你可以use this as a playground。
Afaik,没有更简单的方法。至少feature request exists。
答案 1 :(得分:0)
回调的此配置参数将url作为属性:
// Simple GET request example :
$http.get('/someUrl').
success(function(data, status, headers, config) {
console.log(config.url);
}).
error(function(data, status, headers, config) {
// called asynchronously if an error occurs
// or server returns response with an error status.
});
答案 2 :(得分:0)
您可以使用http请求拦截器。 使用$ httpProvider在配置函数中配置Interceptor 请求拦截器,你可以在发出请求之前看到你通过URL传递的URL和参数
答案 3 :(得分:0)
尝试查看浏览器开发工具中的XHR请求网址