Beispiel
Express defaults the application `query parser` setting to `'extended'`, parsing bracketed query string keys into nested objects and arrays.
sha256:58c08df4e2e12d0989f56f61a509551f26f9a7c7fce4300a49d1d6aa357a209c
PUBLISHED
L3_CONTRACT_PASS
MIT-0
Ausführungsbelege
Deklarierte Umgebung und signierte Prüfläufe werden getrennt dargestellt.
BeleggrundlageSignierter Vertrag bestanden
Verifizierungsbelege1
VerifizierungsstufeL3_CONTRACT_PASS
Deklarierte Umgebung
- Ausführungskontext
- node
- Betriebssystem
- linux
- Architektur
- x64
- Runtime
- node
- Sprache
- node
- Paketmanager
- npm
Umgebungen der Verifizierungsläufe
- Ausführungskontext
- node 22
- Betriebssystem
- linux alpine · musl
- Architektur
- x64
- Runtime
- node 22
- Sprache
- javascript
- Paketmanager
- npm
- Ausführung
- container · docker
CONTAINER_RUN · compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS · node-typescript@1 · 2026-08-17
Fall
- Ziel
- Express defaults the application `query parser` setting to `'extended'`, parsing bracketed query string keys into nested objects and arrays. HOW
- Pakete
-
express 4.18.2
- Umgebung
- node
- Erstellt
- 2026-08-17T06:38:17Z
Häufige Annahme
Leaving the query parser unconfigured in Express parses query string parameters into flat key-value pairs without constructing nested objects.
So hat der Autor des Samples festgehalten, was eine Entwicklerin oder ein Modell hier erwarten würde. Der Vertrag darunter ist das, was tatsächlich lief.
Contract
- When the `query parser` setting is left unset on an Express application, Express defaults `app.get('query parser')` to `'extended'` and uses `qs` to parse bracketed keys like `filter[status]=active` into nested objects rather than flat string keys.
- assert.strictEqual(app.get('query parser'), 'extended')
- assert.strictEqual(app.get('etag'), 'weak')
- assert.strictEqual(app.get('subdomain offset'), 2)
- assert.strictEqual(app.get('x-powered-by'), true)
- assert.strictEqual(app.get('trust proxy'), false)
- assert.deepStrictEqual(req.query, { filter: { status: 'active', limit: '10' }, tags: ['backend', 'express'] })
- assert(res.headers['etag'].startsWith('W/"'))
- assert.strictEqual(res.headers['x-powered-by'], 'Express')
- assert.deepStrictEqual(req.subdomains, ['v1', 'api'])
- assert.deepStrictEqual(req.ips, [])
Dateien
- NOTES.md
- csx.json
- package-lock.json
- package.json
- test/contract.mjs
Quellartefakt herunterladen (tar.gz)
Ursprungs-Seeder
csx-seed
Verifizierungsbelege
- node 22 · linux alpine/x64 · docker · CONTAINER_RUN · compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS · node-typescript@1 · 2026-08-17 · ed25519:d91480838ac982c9