ra-jsonapi-client
A JSONAPI compatible data provider for react-admin.
Features
Currently only the basic actions are supported:
GET_LIST
GET_ONE
CREATE
UPDATE
DELETE
Installation
# via npm
npm install ra-jsonapi-client
# via yarn
yarn add ra-jsonapi-client
Usage
Import this package, set the base url and pass it as the dataProvider to react-admin.
//in app.js
import React from "react";
import { Admin, Resource } from "react-admin";
import jsonapiClient from "ra-jsonapi-client";
const dataProvider = jsonapiClient('http://localhost:3000');
const App = () => (
<Admin dashboard={Dashboard} dataProvider={dataProvider}>
...
</Admin>
);
export default App;
Options
This client allows you to set some optional settings as the second parameter:
// Configure some settings.
const settings = { ... };
// Pass it as the second parameter after the base URL.
const dataProvider = jsonapiClient('http://localhost:3000', settings);
Total count
Since JSONAPI does not specify a standard for the total count key in the meta object, you can set it with:
const settings = { total: 'total-count' };
Which will work for:
{
"data": { ... },
"meta": {
"total-count": 436
}
}
If this option is not set it will fall back to total
.
Basic auth
Because this client uses axios you can set any HTTP header in the options parameters. For basic auth you can use a shortcut:
const settings = {
auth: {
username: 'bob',
password: 'secret'
}
}
The default value is {}
.
Custom HTTP headers
Custom headers can be set by providing a headers
object in options
:
const settings = {
headers: {
Authorization: 'Bearer ...',
'X-Requested-With': 'XMLHttpRequest'
}
}
The default value is:
{
Accept: 'application/vnd.api+json; charset=utf-8',
'Content-Type': 'application/vnd.api+json; charset=utf-8',
}
TODO
- Allow filtering
- Add all actions