Skip to content

Using multiple API sources #117

Open
@jamesremuscat

Description

Just wondered if there was an idiomatic way to configure one Admiral frontend instance to talk to multiple backend APIs?

In my case, I have a bunch of different microservices all sharing an authentication method (JWT).

The best way I've found is to do something like the following:

const multiDataProvider = (resourceMap: { [key: string]: DataProvider }) : DataProvider => {
  return {

    getList: (resource: string, params: object) => resourceMap[resource].getList(resource, params),

    getOne: (resource: string, params: GetOneParams) => resourceMap[resource].getOne(resource, params),

    getCreateFormData: (resource: string) => resourceMap[resource].getCreateFormData(resource),

    getFiltersFormData: (resource: string) => resourceMap[resource].getFiltersFormData(resource),

    create: (resource: string, params: CreateParams) => resourceMap[resource].create(resource, params),

    getUpdateFormData: (resource: string, params: GetOneParams) => resourceMap[resource].getUpdateFormData(resource, params),

    update: (resource: string, params: UpdateParams) => resourceMap[resource].update(resource, params),

    deleteOne: (resource: string, params: DeleteParams) => resourceMap[resource].deleteOne(resource, params),

    reorderList: (resource: string, params: ReorderParams) => resourceMap[resource].reorderList(resource, params)
  }
}

const usersDataProvider = dataProvider(usersUrl);
const replaysDataProvider = dataProvider(replaysUrl);

const mdp = multiDataProvider({
    'users': usersDataProvider,
    'replays': replaysDataProvider,
    'errors': replaysDataProvider
})

then supplying mdp to <Admin> as its dataProvider prop.

Is there a better/easier/more Admiral-ish way?

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions