Giter VIP home page Giter VIP logo

vue-axios-interceptors's Introduction

Latest Version on NPM Total Downloads on NPM Software License

vue-axios-interceptors

Catch and handle ajax errors globally when using Axios with Vue.

Installation

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');

Usage

The package registers a new global event bus called intercepted on the window object and emits several events on it when an ajax call leads to an error. You can easily listen for these events to build a smooth error handling workflow, for example in a global component responsible for displaying error messages:

// ErrorMessages.vue
mounted() {
    window.intercepted.$on('response', data => {
        console.log(data); // { status: 404, code: 'Not found', body: null }
        
        // Display the message.
    });
}

You can also listen for specific status codes and response categories, for example if you'd like to handle 4xx responses differently than 5xx responses:

// 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 => {
  // 
});

For a complete list of status codes, visit https://httpstatuses.com/.

Using this package with Laravel

If you're using Laravel >=5.5 as your backend, you're in luck. If your server returns a 422 response (typically a validation error), the package will automatically parse the returned failures into an iteratable key-value object which you can access on data.body. This is way simpler to use in order to display all messages or reference a single field error than with the original error message structure.

vue-axios-interceptors's People

Contributors

mattias-persson avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

vue-axios-interceptors's Issues

422 interception removes field names

window.intercepted.$on('response:422', data => {
            console.log(data);
        });

In Laravel, when returning a 422 status, the data is an object with the errors associated to the field. That makes really easy to show each error under the wrong field, but the interceptors of this packages are removing the field name, so it's not possible to know to which input belongs each error.

keep console log Error

keep console log Error Require vue-axios-interceptors after you require Vue. and not working

import Vue from 'vue';
require('vue-axios-interceptors');

Import order

In the documentation it says

// 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');

That means importing interceptors before axios. This is not working for me. I've had to import first axios and then vue-axios-interceptors in order to make it work.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.