Module @drupal-api-client/json-api-client


This package contains the JsonApiClient class which extends the base ApiClient class from the @drupal-api-client/api-client package. See for more information about this project.


npm i @drupal-api-client/json-api-client


import JsonApiClient from "@drupal-api-client/json-api-client";
import NodeCache from "node-cache";
import Jsona from "jsona";

// the baseUrl to fetch data from
const myDrupalUrl = process.env.MY_DRUPAL_SITE || "";

const nodeCache = new NodeCache();

const client = new JsonApiClient(myDrupalUrl, {
// supply a custom fetch method in order to add certain headers to each request
// or any other logic you may need before the fetch call
customFetch: (input: RequestInfo | URL, init?: RequestInit) => {
const newHeaders = new Headers(init?.headers);
newHeaders.set("X-Custom-Header", "my-custom-value");
const newInit = {
headers: newHeaders,

return fetch(input, newInit);
// the optional cache will cache a request and return the cached data if the request
// is made again with the same type same data.
// The default cache includes an interface that must be implemented.
// Here is an example using the node-cache package.
// See for details on the node-cache package.
cache: {
get: async <T,>(key: string) => nodeCache.get(key) as T,
set: async (key: string, value: unknown) => nodeCache.set(key, value),
// the optional authentication object will be used to authenticate requests.
// Currently Basic auth is supported.
authentication: {
type: "Basic",
// It is recommended to store sensitive information in environment variables that
// are not checked in to the source code.
username: process.env.MY_USERNAME,
password: process.env.MY_SECRET_PASSWORD,
// The default locale will be in the URL of each request.
// example:
defaultLocale: "en",
// the optional serializer will be used to serialize and deserialize data.
serializer: new Jsona(),

// fetch a single resource
const article = await client.getResource("node--article", "1234");

// fetch a collection of nodes
const articles = await client.getCollection("node--article");




Type Aliases

Generated using TypeDoc