web মডিউল
Bnlang-এর HTTP সার্ভার ফ্রেমওয়ার্ক। Declarative routing, before/after middleware, automatic response coercion, streaming, file serving, templating, এবং WebSocket upgrade।
import "web" as web;
var app = web.app();
app.get("/", function (req) { return "Hello!"; });
app.get("/users/:id", function (req) { return { id: req.params.id }; });
app.post("/upload", function (req) { return web.json({ ok: true }); });
app.listen({ port: 3000 });
App builder
| মেথড | বর্ণনা |
|---|---|
web.app() → app | নতুন app। |
app.get(path, handler) | GET রুট। path-এ :param segments। |
app.post(path, handler), .put, .patch, .delete, .head | অন্যান্য method। |
app.before(fn) | fn(req) প্রতিটি handler-এর আগে। Non-null ফেরত = short-circuit। |
app.after(fn) | fn(resp, req) প্রতিটি handler-এর পরে। |
app.not_found(fn) | কাস্টম 404। |
app.on_error(fn) | Handler exception ধরা। |
app.static(prefix, dir) | dir থেকে prefix/...-এ ফাইল serve। |
app.listen(opts) → server | opts: {port, host?, tls?, max_body_size?, idle_timeout?}। {port, close()} ফেরত। |
Response builder
হ্যান্ডলার থেকে এদের যেকোনো ফেরত দিন — অথবা plain string/map/list দিন এবং web coerce করবে।
| Builder | বর্ণনা |
|---|---|
web.text(s) | text/plain। |
web.html(s) | text/html। |
web.json(value) | application/json। |
web.redirect(url) | 302 redirect। |
web.error(status, msg) | Status-coded error। |
web.file(path) | ফাইল stream। |
web.view(path, ctx) | template দিয়ে রেন্ডার। |
Request object
req.method,req.path,req.url,req.headersreq.params— রুট pattern থেকেreq.query— parsed?a=b&c=dreq.body— raw bodyreq.cookies— parsed cookies map
হেল্পার: web.parse_form(req), web.parse_json(req)।
Streaming + WebSocket
| ফাংশন | বর্ণনা |
|---|---|
web.serve_stream(opts, handler) | Streaming server mode। বড় body buffer ছাড়াই। |
web.upgrade(req) → conn | HTTP রিকোয়েস্ট raw connection-এ upgrade। |
web.set_views(dir) | web.view-এর ডিফল্ট ডিরেক্টরি। |