我将axios用于React应用程序,我想记录我在应用程序中任何位置进行的所有axios调用。我已经通过create函数使用axios的单个全局实例,并且能够登录通用console.log。但是我想要更多的信息,例如调用函数,参数等。
Answers:
最好的方法是拦截器。在请求/响应之前调用每个拦截器。在这种情况下,将使用日志拦截器。
axios.interceptors.request.use(request => {
console.log('Starting Request', JSON.stringify(request, null, 2))
return request
})
axios.interceptors.response.use(response => {
console.log('Response:', JSON.stringify(response, null, 2))
return response
})
或类似的东西。
使用新的axios实例很好:
const api = axios.create({
timeout: 1000
})
这样你可以打电话
api.interceptors[...]
api.interceptors[...]
什么?
api.interceptors[...]
,该[...]
部分是先前演示的代码。他们只是不想输入,api.interceptors.request.use...
然后api.interceptors.response.use...
再次输入答案。
Type Error: Cannot read property request of undefined
第一个request
关键字api.interceptors.request.use(request => { console.log('Starting Request', request) return request })
。如何解决这个错误?
axios-debug-log
npm install --save axios-debug-log
require('axios-debug-log')
在任何axios呼叫之前DEBUG=axios
默认情况下,您将看到类似以下的日志:
axios POST /api/auth/login +0ms
axios 200 (POST http://localhost:8080/api/auth/login) +125ms
axios POST /api/foo +0ms
axios 200 (POST http://localhost:8080/api/foo) +15ms
有关配置和自定义选项,请参阅文档。
看来您可以使用“拦截器”拦截所有请求,并在其中登录:https : //github.com/mzabriskie/axios#interceptors
您可以尝试将axios.request
函数包装在Promise中。
function loggedRequest(config) {
return new Promise((resolve, reject) => {
axios.request(config)
.then((res) => {
// log success, config, res here
resolve(res);
})
.catch(err => {
// same, log whatever you want here
reject(err);
})
})
}
在nodejs中发送请求时,需要将日志显示到控制台。
这是MySQL的NPM软件包,可让您记录所有axios请求https://www.npmjs.com/package/axios-logger-mysql,希望对您有所帮助。
return response
,代码将在拦截器打破