@molecule/api-middleware-body-parser-express
Provider bond · middleware · API (Node) · v1.0.3 · Apache-2.0
Express body parser provider (JSON and multipart)
npm install @molecule/api-middleware-body-parser-expressnpm · Source on GitHub · Implements @molecule/api-middleware-body-parser
How it works
@molecule/api-middleware-body-parser-express is a provider bond on the API (Node) side: it implements the middleware core interface (@molecule/api-middleware-body-parser) with a concrete vendor or library behind it.
Your code calls the core; you wire this provider once at startup. Swapping vendors later is one line in that wiring, not a rewrite.
import { setBodyParser, setJsonParserFactory } from '@molecule/api-middleware-body-parser'
import { provider, jsonParserFactory } from '@molecule/api-middleware-body-parser-express'
setBodyParser(provider)
setJsonParserFactory(jsonParserFactory)Works with: @molecule/api-bond, @molecule/api-i18n, @molecule/api-middleware-body-parser
Reference
Express body parser provider for molecule.dev.
Auto-generated, AI-first package reference for the molecule.dev ecosystem. It is written to be read by coding agents as much as by people, and is generated from this package's source — edit
src/index.tsJSDoc, not this file.
Quick Start
import { setBodyParser, setJsonParserFactory } from '@molecule/api-middleware-body-parser'
import { provider, jsonParserFactory } from '@molecule/api-middleware-body-parser-express'
setBodyParser(provider)
setJsonParserFactory(jsonParserFactory)
Type
provider
Installation
npm install @molecule/api-middleware-body-parser-express @molecule/api-bond @molecule/api-i18n @molecule/api-middleware-body-parser connect-busboy express
npm install -D @types/connect-busboy @types/express
API
Functions
provider(req, res, next)
Express body parser middleware provider.
Routes requests to the appropriate parser: busboy for multipart/form-data and
URL-encoded bodies, or Express's built-in JSON parser for everything else.
Sets req.rawBody for Stripe and similar libraries that need the unparsed body.
For file uploads, use @molecule/utilities-files.
function provider(req: unknown, res: unknown, next: (err?: unknown) => void): void
req— The incoming request object.res— The response object.next— The next middleware function.
jsonParserFactory(options)
Creates a JSON body parser middleware with custom options (e.g. custom limit, type, or verify).
function jsonParserFactory(options?: JsonParserOptions): Middleware
options— Express JSON parser options passed directly toexpress.json().
Returns: A Middleware that parses JSON request bodies with the specified options.
Core Interface
Implements @molecule/api-middleware-body-parser interface.
Bond Wiring
Setup function to register this provider with the core interface:
import { setJsonParserFactory } from '@molecule/api-middleware-body-parser'
import { jsonParserFactory } from '@molecule/api-middleware-body-parser-express'
export function setupMiddlewareBodyParserExpress(): void {
setJsonParserFactory(jsonParserFactory)
}
Injection Notes
Requirements
Peer dependencies:
@molecule/api-bond^1.0.1@molecule/api-i18n^1.0.1@molecule/api-middleware-body-parser^1.0.1express^5.0.0
Runtime Dependencies
-
@molecule/api-bond -
@molecule/api-i18n -
@molecule/api-middleware-body-parser -
connect-busboy -
express -
Wire BOTH setters (as in the example):
setBodyParser(provider)registers the parser the corebodyParsermiddleware delegates to — wiring only the factory leavesgetBodyParser()throwing on the first request. -
JSON bodies are capped at 2 MB (413 beyond it). For larger payloads create a custom parser via
setJsonParserFactory(jsonParserFactory)+createJsonParser({ limit: '10mb' })from the core. -
multipart/form-dataandapplication/x-www-form-urlencodedare parsed by busboy: file parts are skipped (streams drained — use@molecule/utilities-filesfor uploads), and each field value is JSON-parsed when possible ("123"→ number123,"true"→true; invalid JSON stays a string). Cumulative field bytes are capped at 2 MB (413). -
req.rawBody(a STRING copy of the unparsed body, for Stripe-style webhook signature verification) is set only on the JSON path — multipart requests never get it.