/plugin-axios

Vuex ORM persistence plugin to sync the store against a RESTful API.

Primary LanguageTypeScriptMIT LicenseMIT

Vuex ORM

Vuex Orm Plugin: Axios

Travis CI codecov JavaScript Style Guide License

Vuex ORM Axios plugin adds the smooth integration between API request call and Vuex ORM persistent through awesome Axios.

User.api().get('/api/users')

Sponsors

Vuex ORM is sponsored by awesome folks. Big love to all of them from whole Vuex ORM community 💕

Super Love Sponsors

Peter Tóth Mario Kolli Cannikan

A Love Sponsors

George Chaduneli

Documentation

You can check out the full documentation for Vuex ORM Axios at https://vuex-orm.github.io/plugin-axios.

Questions & Discussions

Join us on our Slack Channel for any questions and discussions.

Although there is the Slack Channel, do not hesitate to open an issue for any question you might have. We're always more than happy to hear any feedback, and we don't care what kind of form they are.

Quick Start

Here's a very simple quick start guide that demonstrates how it feels like to be using Vuex ORM Axios.

Install and Setup Vuex ORM Axios

Install Vuex ORM Axios by npm or yarn. Note that the Vuex ORM Axios require Axios to be installed manually, so don't forget to install it too!

$ npm install axios @vuex-orm/core @vuex-orm/plugin-axios

$ yarn add axios @vuex-orm/core @vuex-orm/plugin-axios

To plugin Vuex ORM Axios to Vuex ORM, pass Vuex ORM Axios to the VuexORM.use method. Here, you should pass your axios instance as an option.

import axios from 'axios'
import VuexORM from '@vuex-orm/core'
import VuexORMAxios from '@vuex-orm/plugin-axios'

VuexORM.use(VuexORMAxios, { axios })

Usage

After setting up Vuex ORM Axios, you may use Model.api method to perform api call.

User.api().get('/api/users')

Vuex ORM Axios can perform all basic Axios requests, which is get, post, put, patch, delete, and request. These methods take the same arguments as Axios and perform exactly as same as Axios, except it's going to store response data to the store corresponding to the Model that is calling the api.

Vuex ORM Axios lets you define the "Custom Actions" as well. Like this.

class User extends Model {
  static entity = 'users'

  static fields () {
    return {
      id: this.attr(null),
      name: this.attr('')
    }
  }

  static apiConfig = {
    actions: {
      fetch: {
        method: 'get',
        url: '/api/users'
      }
    }
  }
}

And then, you can use the above fetch method through your model.

User.api().fetch()

Now, are you ready to learn more about the plugin? Let's jump right into it.

Plugins

Vuex ORM can be extended via a plugin to add additional features. Here is the list of available plugins.

Contribution

We are excited that you are interested in contributing to Vuex ORM Axios! Anything from raising an issue, submitting an idea of a new feature, or making a pull request is welcome!

Development

$ yarn build

Compile files and generate bundles in dist directory.

$ yarn lint

Lint files using a rule of Standard JS.

$ yarn test

Run the test using Jest.

$ yarn test:watch

Run the test in watch mode.

$ yarn coverage

Generate test coverage in coverage directory.

License

The Vuex ORM Plugin Axios is open-sourced software licensed under the MIT license.