当运行环境中没有XHR 对象或fetch 接口时(例如使用React Native
开发,运行在移动端的应用),可以使用手动调用接口的方式监控请求。
window['TINGYUN'].addAjax(ajaxData)
ajaxData对象类型,包含下列属性:
属性 | 说明 | 默认值 |
---|---|---|
method | 请求方法 | GET |
url | 请求url | 空 |
status | 状态码 | 0 |
start | 请求开始时间戳 | 0 |
du | 请求耗时 | end-start |
end | 请求结束时间戳 | 0 |
send | 发送字节数 | 0 |
rec | 服务端返回字节数 | 0 |
cb | 回调函数执行时间 | 0 |
接口调用参考方式:
const ajaxData = {
method: 'GET',
url: 'https://jsonplaceholder.typicode.com/todos/1',
start: +new Date
};
axios.get('https://jsonplaceholder.typicode.com/todos/1')
.then(function (response) {
// handle success
ajaxData.rec = (JSON.stringify(response.data) || '').length;
ajaxData.end = +new Date;
ajaxData.du = ajaxData.end - ajaxData.start;
ajaxData.status = response.status;
})
.catch(function (error) {
// handle error
})
.finally(function () {
// always executed
// 调用添加ajax接口
window['TINGYUN'].addAjax(ajaxData);
});
需要更加准确记录start 和end,可以在 transformRequest
和 transformResponse
中设置。
示例:
const ajaxData = {
method: 'GET',
url: 'https://jsonplaceholder.typicode.com/todos/1'
};
const axiosInstance = axios.create({
transformRequest: [function (data, headers) {
ajaxData.start = +new Date;
return data;
}],
transformResponse: [function (data) {
ajaxData.end = +new Date;
return data;
}],
});
axiosInstance.get('https://jsonplaceholder.typicode.com/todos/1')
.then(function (response) {
// handle success
ajaxData.rec = (JSON.stringify(response.data) || '').length;
ajaxData.du = ajaxData.end - ajaxData.start;
ajaxData.status = response.status;
})
.catch(function (error) {
// handle error
})
.finally(function () {
// always executed
window['TINGYUN'].addAjax(ajaxData);
});
当使用手动设置Ajax时,可以禁用默认的Ajax监控功能。在设置中关闭Ajax自动监控
开关,保存后重新嵌码。