Skip to content

Latest commit

 

History

History
 
 

adapter

EmberData Adapter EmberData Adapter

Provides REST and JSON:API Implementations of the legacy Adapter Interface

Caution ⚠️ This is LEGACY documentation for a feature that is no longer encouraged to be used. If starting a new app or thinking of implementing a new adapter, consider writing a Handler instead to be used with the RequestManager

Installation

This package is currently installed when installing ember-data.

If installing @ember-data/ packages individually install using your javascript package manager of choice. For instance with pnpm

pnpm add @ember-data/adapter

🚀 Setup

If using ember-data no additional setup is necesssary.

Note When using ember-data the below configuration is handled for you automatically.

To use legacy adapters you will need to have installed and configured the LegacyNetworkHandler from @ember-data/legacy-compat

pnpm add @ember-data/legacy-compat
import Store, { CacheHandler } from '@ember-data/store';
import RequestManager from '@ember-data/request';
import { LegacyNetworkHandler } from '@ember-data/legacy-compat';

export default class extends Store {
  requestManager = new RequestManager();

  constructor(args) {
    super(args);
    this.requestManager.use([LegacyNetworkHandler]);
    this.requestManager.useCache(CacheHandler);
  }
}

Usage

To use as either a per-type or application adapter, export one of the implementations within the adapters/ directory of your app as appropriate.

For instance, to configure an application adapter to use JSON:API

app/adapters/application.ts

export { default } from '@ember-data/adapter/json-api';

By default adapters are resolved by looking for an adapter with the same name in the adapters folder as the type given to store.adapterFor(<type>), falling back to looking for an adapter named application.

Overriding Resolution

If you would like to avoid using resolver semantics and your application has only one or a few adapters, you may ovveride the adapterFor hook on the store.

import Store from '@ember-data/store';
import Adapter from '@ember-data/adapter/json-api';

class extends Store {
  #adapter = new Adapter();

  adapterFor() {
    return this.#adapter;
  }
}

For the full list of APIs available read the code documentation for @ember-data/adapter. You may also be interested in learning more about EmberData's Adapter Interface.