Skip to content

API reference / @backpack/rest-client

@backpack/rest-client๏ธ ๐ŸŒ โ€‹

A pre-configured REST client built on top of Wretch, enhanced with additional middleware for extended functionality.

Installing โ€‹

First, ensure you have set up Nexus as private registry needed to use Backpack.

Then, install the package using npm:

bash
npm install @backpack/rest-client

Example usage โ€‹

Wretch is basically a thin wrapper around the Fetch API:

ts
import { createRestClient } from "@backpack/rest-client";

const books = await createRestClient({ baseUrl: "https://my-book-store.com" })
  .url("/api/v1/books")
  .get()
  .json();

You can check out the Wretch documentation to learn more.

Advanced usage โ€‹

ts
import { createRestClient } from "@backpack/rest-client";

const restClient = createRestClient({
  // additional options:
  baseUrl: "https://api.bookstore.com/",
  timeoutMilliseconds: 2_000,
  apiManagementSubscriptionKey: "...",
  userAgent: "my-app/v2"
});

// additional methods: 
const result = await restClient

  // set or override subscription key:
  .apiManagementSubscriptionKey("...")

  // set or override user agent header
  // shorthand for `.headers({ "User-Agent", "..." })`:
  .userAgent("my-app")

  // set or override timeout:
  .setTimeout(2_000)

  // shorthand for `.headers({ "Accept-Language", "..." })`:
  .acceptLanguage("my-app")

  .url("/api/v1/books")
  .get()

  // shorthand for `.json().then(it => MyZodSchema.parse(it)`
  .validatedJson(MyZodSchema)

Adding additional logging โ€‹

Optionally, you can add logging using the powertoolsLoggingMiddleware().

This middleware uses Powertools Logger to add logging fro requests and responses:

ts
import { createRestClient, powertoolsLoggingMiddleware } from "@backpack/rest-client";

const restClient = createRestClient()
  .middlewares([
    powertoolsLoggingMiddleware({
      logger: myLogger
      // additional options
    })
  ]);

Do you have ideas for additional middleware?

Please consider making a contribution by submitting a pull request.

Interfaces โ€‹

Type Aliases โ€‹

Functions โ€‹

Wretch Addons โ€‹

Wretch Middlewares โ€‹