我正在使用$ http服务发出http请求,如下所示:
$http({
url: "URL",
method: "POST",
data: payload,
headers :{
"Content-Type": "application/json",
"access_token": xyz
}
}).then(function (response) {
$log.debug("Response :",response);
}, function (error) {
$log.debug("error :",error);
});
我需要访问我发送的请求对象(以及标题等)。代码可以吗?
答案 0 :(得分:1)
使用interceptor。这是一个good article和一个例子。
module.factory('timestampMarker', [function() {
var timestampMarker = {
request: function(config) {
config.requestTimestamp = new Date().getTime();
return config;
},
response: function(response) {
response.config.responseTimestamp = new Date().getTime();
return response;
}
};
return timestampMarker;
}]);
module.config(['$httpProvider', function($httpProvider) {
$httpProvider.interceptors.push('timestampMarker');
}]);
使用拦截器将使您能够读取请求或向请求添加标头等。希望它有所帮助。
答案 1 :(得分:1)
您可以在示例中看到请求属性:
$http.post('/service', params).success(
function(data, status, headers, config) {
//...
console.log('properties', config.method, config.headers['Content-Type'], config);
});
或者如果您想以更全局的方式在请求之前/之后查看/更改属性,您可以使用拦截器:
app.config(['$httpProvider', function($httpProvider) {
$httpProvider.interceptors.push(['$q', function($q) {
return {
'request': function(config) {
// for example:
config.headers['Content-Type'] = 'application/x-www-form-urlencoded';
// same more logic ...
return config;
},
'response': function(response) {
// for example:
if (!response.data || !response.data.status) {
return $q.reject(response);
}
// same more logic ...
return response;
},
'responseError': function(rejection) {
// same more logic ...
}
};
}]);
}]);