Router
Router middleware for curveball
Install / Use
/learn @curveball/RouterREADME
Curveball Router
This package is a simple router for Curveball.
Installation
npm install @curveball/router
Getting started
The simplest, and recommended form works as follows:
import { Application } from '@curveball/kernel';
import router from '@curveball/router';
const app = Application();
app.use(
router('/foo/:id', ctx => {
// the 'id' is available via ctx.params.id
})
);
It's also possible to do per-method routing, using the following syntax.
import { Application } from '@curveball/kernel';
import router from '@curveball/router';
const app = Application();
app.use(
router('/foo/:id')
.get( ctx => { /* GET requests */ })
.post( ctx => { /* POST requests */ })
);
You can either specify 1, or multiple middlewares. The following example runs 2 fictional middlewares on a route.
const app = Application();
const route = router(
'/foo/:id',
myAuthMiddleware,
myBodyparser,
ctx => {
ctx.response.body = 'success!';
}
);
app.use(route);
Access matched route in other middleware
The matched route is added into the Curveball context for other middleware to access if they need (such as for access request logging). It will be accessible after the router has executed.
import { Application, Context } from '@curveball/kernel';
import router from '@curveball/router';
const app = Application();
app.use(async (ctx: Context, next) => {
await next();
// Will be '/foo/:id'
const matchedRoute = ctx.router?.matchedRoute;
});
app.use(
router('/foo/:id', ctx => {
ctx.response.body = '/foo/' + ctx.state.params.id;
});
);
Related Skills
node-connect
348.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
108.8kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
348.0kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
348.0kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
