Skip to content

Latest commit

 

History

History
 
 

serializer

EmberData Serializer EmberData Serializer

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

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/serializer

🚀 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 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);
  }
}

Usage

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.