API routes

Any file in the src/routes directory with a name that matches *.api.js or *.api.ts will become an API route. Routing convention is the same as in pages:

Module nameURL path
src/routes/api/index.api.jsx/api
src/routes/api/users.api.jsx/api/users
src/routes/api/users/index.api.jsxalso /api/users

Dynamic routes and catch-all routes are also supported (/api/user/[userId].api.js, /path/[...rest].api.js ctc.).

API route modules export method handlers that match the name of the HTTP method they handle, but in lowercase, like get, post, put, etc. Since delete is a reserved word in JavaScript, del is used instead.

Rakkas's HTTP handling is built on HatTip, a set of JavaScript libraries for building HTTP server applications that run on many platforms like Node.js, Cloudflare Workers, Vercel, Netlify, Deno, and more. API method handlers are passed a HatTip RequestContext object that represents the HTTP request. Its request property is a standard Request object. Handlers are expected to return a standard Response object (or a promise of one). Response and Request follow the Fetch API standard.

You can call the new Response constructor or use the helper functions from the @hattip/response package to build responses:

import { json } from "@hattip/response";

export function get() {
  return json({ hello: "world" });

  // Shorthand for:

  // return new Response(JSON.stringify({ hello: "world" }), {
  // 	headers: { "content-type": "application/json" },
  // });
}

Fetching data from downstream servers

A server-side fetch implementation is available on the backend for fetching data from downstream servers.