docs
routing
Data Fetching

Data Fetching

ERROR

snatcher has been deprecated since 3.0.

Since node version v17.5.0 you can use fetch() without any installation. If node version is below v17.5.0, install libraries such as node-fetch.

middlewares/fetch.ts
import { Middleware, ZelyRequest } from 'zely';
 
// If you are using typescript, you have to extend `zely.ZelyRequest`.
 
declare module 'zely' {
  interface ZelyRequest {
    fetch(url: string, options?: any): Promise<Response>;
  }
}
 
export const Fetch: Middleware = (req, res, next) => {
  // @ts-expect-error
  req.fetch = (url: string, options: any) => {
    return fetch(new URL(url, `http://${req.headers.host as string}`), options);
  };
  next();
};

Then register middleware in the config file.

Now you can fetch data!

Typescript
import type { PageHandler } from 'zely';
 
export default [
  GET((ctx) => {
    const res = await ctx.request.fetch('/api/hello/');
    const data = await res.text();
    // ...
  }),
] satisfies PageHandler[];