Provides JSON, REST and JSON:API Implementations of the legacy Serializer 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 serializer, consider writing a Handler instead to be used with the RequestManager
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/serializer
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 serializers 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);
}
}
To use as either a per-type or application serializer, export one of the
implementations within the serializers/
directory of your app as appropriate.
For instance, to configure an application serializer to use JSON:API
app/serializers/application.ts
export { default } from '@ember-data/serializer/json-api';
By default serializers are resolved by looking for a serializer with the same name in the serializers/
folder as the type
given to store.serializerFor(<type>)
, falling back to looking for a serializer named application
.
Overriding Resolution
If you would like to avoid using resolver semantics and your application has only one or a few serializers, you may ovveride the serializerFor
hook on the store.
import Store from '@ember-data/store';
import Serializer from '@ember-data/serializer/json-api';
class extends Store {
#serializer = new Serializer();
serializerFor() {
return this.#serializer;
}
}
For the full list of APIs available read the code documentation for @ember-data/serializer. You may also be interested in learning more about EmberData's Serializer Interface.