@reststate/vuex
| Install | |
|---|---|
npm install @reststate/vuex |
|
| Latest Version: | 0.2.5 |
| Vue: | 2 |
| License: | Apache-2.0 |
| Last Updated: | Feb 26, 2022 |
| Links: | GitHub · npm |
@reststate/vuex
This package is no longer maintained.
@reststate/vuex allows you to access data from a JSON:API web service via Vuex stores. Because of JSON:API's strong conventions, in most cases all you should need to do is tell @reststate/vuex the base URL of your web service, and which resources to access, and you should be set. No manual web request juggling!
Synopsis
const store = new Vuex.Store({
modules: {
'widgets': resourceModule({
name: 'widgets',
httpClient: axios.create(...),
}),
},
});
const component = {
methods: {
...mapActions({
loadAllWidgets: 'widgets/loadAll',
}),
},
computed: {
...mapGetters({
widgets: 'widgets/all',
}),
},
};
Installation
# npm install --save @reststate/vuex
Setup
To create a Vuex module corresponding to a resource on the server, call resourceModule():
import { Store } from 'vuex';
import { resourceModule } from '@reststate/vuex';
import api from './api';
const store = new Store({
modules: {
widgets: resourceModule({
name: 'widgets',
httpClient: api,
}),
},
});
If you are accessing multiple resources, you can use mapResourceModules():
import { Store } from 'vuex';
import { mapResourceModules } from '@reststate/vuex';
import api from './api';
const store = new Store({
modules: {
...mapResourceModules({
names: ['widgets', 'purchases'],
httpClient: api,
}),
},
});
The httpClient accepts an object with a signature similar to the popular Axios HTTP client directory. You can either pass in an Axios client configured with your base URL and headers. Note that spec-compliant servers will require a Content-Type header of application/vnd.api+json; you will need to configure your HTTP client to send that.
import axios from 'axios';
const httpClient = axios.create({
baseURL: 'http://api.example.com/',
headers: {
'Content-Type': 'application/vnd.api+json',
Authentication: `Bearer ${token}`,
},
});
const module = resourceModule({
name: 'widgets',
httpClient,
});
Or else you can pass in an object that exposes the following methods:
const httpClient = {
get(path) {
// ...
},
post(path, body) {
// ...
},
patch(path, body) {
// ...
},
delete(path, body) {
// ...
},
};
That's all you need to do--the JSON:API spec takes care of the rest!
Usage
For more information on usage, see the @reststate/vuex docs.
License
Apache 2.0
Version History
| Version | Released | Vue | License |
|---|---|---|---|
| 0.2.5 | 2.6.11 | Apache-2.0 | |
| 0.2.4 | 2.6.11 | Apache-2.0 | |
| 0.2.3 | ^2.6.10 | Apache-2.0 | |
| 0.2.2 | ^2.6.10 | Apache-2.0 | |
| 0.2.1 | ^2.6.10 | Apache-2.0 | |
| 0.2.0 | ^2.6.10 | Apache-2.0 | |
| 0.1.6 | ^2.6.10 | Apache-2.0 | |
| 0.1.5 | ^2.6.10 | Apache-2.0 | |
| 0.1.4 | ^2.6.10 | Apache-2.0 | |
| 0.1.3 | ^2.6.10 | Apache-2.0 | |
| 0.1.2 | ^2.6.10 | Apache-2.0 | |
| 0.1.1 | ^2.6.10 | Apache-2.0 | |
| 0.1.0 | ^2.6.10 | Apache-2.0 | |
| 0.0.16 | ^2.5.16 | Apache-2.0 | |
| 0.0.15 | ^2.5.16 | Apache-2.0 | |
| 0.0.14 | ^2.5.16 | Apache-2.0 | |
| 0.0.13 | ^2.5.16 | Apache-2.0 | |
| 0.0.12 | ^2.5.16 | Apache-2.0 | |
| 0.0.11 | ^2.5.16 | Apache-2.0 | |
| 0.0.10 | ^2.5.16 | Apache-2.0 | |
| 0.0.9 | ^2.5.16 | Apache-2.0 | |
| 0.0.8 | ^2.5.16 | Apache-2.0 | |
| 0.0.7 | ^2.5.16 | Apache-2.0 | |
| 0.0.6 | ^2.5.16 | Apache-2.0 | |
| 0.0.5 | ^2.5.16 | Apache-2.0 | |
| 0.0.4 | ^2.5.16 | Apache-2.0 | |
| 0.0.3 | ^2.5.16 | Apache-2.0 |