Skip to main content
Using Deno in production at your company? Earn free Deno merch.
Give us feedback

Raptor

License deno.land PRs Welcome deps badge cache badge

Fast router handler for Deno server and Deploy.

Raptor implemented to nhttp

Features

  • Middleware support.
  • Sub Router support.

Usage

import { serve } from "https://deno.land/std@0.118.0/http/server.ts";
import { raptor, JsonResponse } from "https://deno.land/x/raptor@0.0.5/mod.ts";

serve(
  raptor()
    .make("GET", () => new Response("Hello World"))
    .make("GET/hello/:name", (req) => new Response(`Hello ${req.params.name}`))
    .make("GET/hello-json", () => new JsonResponse({ name: "raptor" }))
    .resolve,
);

console.log("Raptor was here !!");

Run

deno run --allow-net file.ts

and visit http://localhost:8000 with path / or /hello-json or /hello/yourname

Make

Make everything with raptor().make(verb, ...fns).

the verb is => GET | POST | DELETE | PUT | PATCH | OPTIONS | HEAD | ANY | ROUTER | WARE | ERROR | 404 and path.

Make Method Handlers

serve(
  raptor()
    .make("GET/hello/:name", (req) => new Response(`Hello ${req.params.name}`))
    .resolve,
);

Make Global Middleware

serve(
  raptor()
    .make("WARE", (req, next) => {
      req.foo = "foo";
      return next();
    })
    .make("GET/hello", (req) => new Response(`Hello ${req.foo}`))
    .resolve,
);

If Inline Middleware

serve(
  raptor()
    .make("GET/hello", (req, next) => {
      req.foo = "foo";
      return next();
    }, (req) => {
      return new Response(`Hello ${req.foo}`);
    })
    .resolve,
);

Make Sub Router

const router = raptor.createRouter();
router.make("GET/user", () => new Response("Hello from router"));

serve(
  raptor()
    .make("ROUTER/api/v1", [router])
    .resolve,
);

// visit http://localhost:8000/api/v1/user

Make onError

Global error response.

serve(
  raptor()
    // example
    .make(
      "ERROR",
      (err, req) => new Response(err.message, { status: err.status || 500 }),
    )
    .resolve,
);

Make on404

Global 404 response.

serve(
  raptor()
    // example
    .make("404", (req) => new Response("404 not found url", { status: 404 }))
    .resolve,
);

See examples

License

MIT