Arguments

  1. apiKey
    string
    required

    The API key for the Makeswift site.

  2. options
    object
    required

    Options for site version and locale.

Examples

App Router

src/app/api/makeswift/[...makeswift]/route.ts
import { MakeswiftApiHandler } from "@makeswift/runtime/next/server";
import { strict } from "assert";

import { runtime } from "@/makeswift/runtime";

// make custom components' data available for introspection
import "@/makeswift/components";

strict(
  process.env.MAKESWIFT_SITE_API_KEY,
  "MAKESWIFT_SITE_API_KEY is required"
);

const handler = MakeswiftApiHandler(process.env.MAKESWIFT_SITE_API_KEY, {
  runtime,
});

export { handler as GET, handler as POST };

Pages router

src/pages/api/makeswift/[...makeswift].ts
import { MakeswiftApiHandler } from "@makeswift/runtime/next/server";
import { strict } from "assert";

import { runtime } from "@/makeswift/runtime";

// make custom components' data available for introspection
import "@/makeswift/components";

strict(
  process.env.MAKESWIFT_SITE_API_KEY,
  "MAKESWIFT_SITE_API_KEY is required"
);

export default MakeswiftApiHandler(process.env.MAKESWIFT_SITE_API_KEY, {
  runtime,
});

Adding fonts

The following example adds Spline Sans and Spline Sans Mono fonts to the site using next/font and adds them to the MakeswiftApiHandler. Using a variable font reduces the number of font files requested.

import { MakeswiftApiHandler } from "@makeswift/runtime/next/server";
import { strict } from "assert";

import { runtime } from "@/makeswift/runtime";

strict(
  process.env.MAKESWIFT_SITE_API_KEY,
  "MAKESWIFT_SITE_API_KEY is required"
);

export default MakeswiftApiHandler(process.env.MAKESWIFT_SITE_API_KEY, {
  runtime,
  getFonts() {
    return [
      {
        family: "Spline Sans",
        variants: [
          {
            weight: "300",
            style: "normal",
            src: "/fonts/SplineSans-VariableFont.woff2",
          },
          {
            weight: "400",
            style: "normal",
            src: "/fonts/SplineSans-VariableFont.woff2",
          },
          {
            weight: "500",
            style: "normal",
            src: "/fonts/SplineSans-VariableFont.woff2",
          },
        ],
      },
      {
        family: "Spline Sans Mono",
        variants: [
          {
            weight: "500",
            style: "normal",
            src: "/fonts/SplineSansMono-VariableFont.woff2",
          },
        ],
      },
    ];
  },
});