vue axios interceptors
0.3.1
将Axios
与Vue
结合使用时,全局捕获并处理 ajax 错误。
npm install vue-axios-interceptors --save
// or
yarn add vue-axios-interceptors
// Make sure you import this package after you've imported Vue:
window . Vue = require ( 'vue' ) ;
require ( 'vue-axios-interceptors' ) ;
// Make sure the axios package is available globally on the window object:
window . axios = require ( 'axios' ) ;
该包在window
对象上注册一个名为intercepted
新全局事件总线,并在 ajax 调用导致错误时在其上发出多个事件。您可以轻松侦听这些事件以构建流畅的错误处理工作流程,例如在负责显示错误消息的全局组件中:
// ErrorMessages.vue
mounted ( ) {
window . intercepted . $on ( 'response' , data => {
console . log ( data ) ; // { status: 404, code: 'Not found', body: null }
// Display the message.
} ) ;
}
您还可以侦听特定的状态代码和响应类别,例如,如果您希望以不同于 5xx 响应的方式处理 4xx 响应:
// Listen for any intercepted responses.
window . intercepted . $on ( 'response' , data => {
//
} ) ;
// Listen for any intercepted responses under the Client Error category (4xx).
window . intercepted . $on ( 'response:client-error' , data => {
//
} ) ;
// Listen for any intercepted responses under the Server Error category (5xx).
window . intercepted . $on ( 'response:5xx' , data => {
//
} ) ;
// Listen for a specific status.
window . intercepted . $on ( 'response:404' , data => {
//
} ) ;
// Listen for a specific HTTP code.
window . intercepted . $on ( 'response:unprocessable-entity' , data => {
//
} ) ;
有关状态代码的完整列表,请访问 https://httpstatuses.com/。
如果您使用 Laravel >=5.5 作为后端,那么您很幸运。如果您的服务器返回422
响应(通常是验证错误),该包将自动将返回的失败解析为可迭代的键值对象,您可以在data.body
上访问该对象。与原始错误消息结构相比,显示所有消息或引用单个字段错误更容易使用。