如何在代码中从一个地方记录所有axios调用

Dav*_*hoi 43 reactjs axios

我正在使用axios作为反应应用程序,我想记录我在应用程序中的任何位置进行的所有axios调用.我已经通过create函数使用了一个axios的全局实例,并且我能够记录一个通用的console.log.但是,我想要更多信息,如函数被调用,参数等.

小智 78

执行此操作的最佳方法是拦截器.在请求/响应之前调用每个拦截器.在这种情况下,日志拦截器将是.

axios.interceptors.request.use(request => {
  console.log('Starting Request', request)
  return request
})

axios.interceptors.response.use(response => {
  console.log('Response:', response)
  return response
})
Run Code Online (Sandbox Code Playgroud)

或者那种效果.

你正在使用一个新的axios实例是很好的:

const api = axios.create({
  timeout: 1000
})
Run Code Online (Sandbox Code Playgroud)

那样你就可以打电话了

api.interceptors[...]
Run Code Online (Sandbox Code Playgroud)

  • 到底是什么`api.interceptors [...]`? (4认同)
  • 我在“api.interceptors.request.use(request => { console.log('Starting Request', request) return request })”的第一个“request”关键字中收到“类型错误:无法读取未定义的属性请求”。如何修复这个错误? (3认同)
  • 值得注意的是,如果没有 `return response`,代码将在拦截器处中断 (2认同)
  • 在“ api.interceptors [...]”中,“ [...]”部分是前面演示的代码。他们只是不想在答案中再次输入“ api.interceptors.request.use ...”和“ api.interceptors.response.use ...”。 (2认同)

Dhe*_*.S. 8

使用 axios-debug-log

  1. npm install --save axios-debug-log
  2. require('axios-debug-log') 在任何axios呼叫之前
  3. 设置环境变量 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
Run Code Online (Sandbox Code Playgroud)

有关配置和自定义选项,请参阅文档


Jef*_*oud 6

看起来您可以使用“拦截器”拦截所有请求,并登录其中: https: //github.com/mzabriskie/axios#interceptors