Skip to content
module@warp-drive/utilities/json-api

This module provides utilities for working with {json:api} APIs with WarpDrive

Usage ​

Request builders are functions that produce Fetch Options. They take a few contextual inputs about the request you want to make, abstracting away the gnarlier details. See the Builders guide for what request builders do and when to use one.

For instance, to fetch a resource from your API

ts
import { findRecord } from '@warp-drive/utilities/json-api';
import type { EmberDeveloper } from '#/data/types';

const options = findRecord<EmberDeveloper>(
 'ember-developer', '1',
 { include: ['pets', 'friends']
});
ts
{
  url: 'https://api.example.com/v1/ember-developers/1?include=friends,pets',
  method: 'GET',
  headers: <Headers>,
    // => 'Accept': 'application/vnd.api+json'
    // => 'Content-Type': 'application/vnd.api+json'
  op: 'findRecord';
  records: [{ type: 'ember-developer', id: '1' }]
}

Request builder output may be used with either RequestManager.request or Store.request.

ts
const data = await store.request(options);

Features ​

  • URLs are stable. The same query will produce the same URL every time, even if the order of keys in the query or values in an array changes.
  • URLs follow the most common {json:api} format (dasherized pluralized resource types)
  • The response document's errors are typed as ApiError, the {json:api} error object.

Functions ​

Types ​

Released under the MIT License.