Transparent MessagePack middleware for Express
npm install express-msgpack


[Express] and [MessagePack], together at last. Uses [@msgpack/msgpack][1] by default.
Provides transparent middleware that can be used to support clients requestingAccept: application/msgpack from endpoints using res.json or sendingContent-Type: application/msgpack to any endpoint. You can continue to usereq.body and res.json and expressMsgpack will handle the conversion in
the background using @msgpack/msgpack (or any compatible library of your
choice).
``bash`
$ npm install --save express-msgpack
// or
$ yarn add express-msgpack
If you intend to use an alternative to @msgpack/msgpack (see Configuration)--no-optional
you can add the flag; it's an optional dependency.
`javascript
import msgpack from "express-msgpack";
// ...
app.use(msgpack());
`
`javascript
const msgpack = require("express-msgpack").default;
// ...
app.use(msgpack());
`
To configure, pass options when you configure the middleware. Currently supported options are:
| Parameter | Description | Default |
|---|---|---|
| allowUnacceptableResponse | a boolean indicating whether the response should still be sent if the client doesn't set a compatible Accept type (rather than a 406 Not Acceptable response) | false |decoder
| | a function converting from MessagePack to JavaScript | @msgpack/msgpack#decode |encoder
| | a function converting from JavaScript to MessagePack | @msgpack/msgpack#encode (with a wrapper to convert the result to a Buffer) |mimeType
| | the MIME type to detect and set for MessagePack payloads | "application/msgpack" |limit
| | The byte limit of the body. This is the number of bytes or any string format supported by bytes | "100kb" |
For example, to switch to the node-gyp C++ based [msgpack] library:
`javascript
import msgpack from "express-msgpack";
import { pack, unpack } from "msgpack";
// ...
app.use(msgpack({ decoder: unpack, encoder: pack }));
`
The project has code linting and testing, using the following commands:
- npm run e2e: run the smoke/E2E testsnpm run lint
- : run the ESLint checksnpm run ship
- : lint and run unit, integration and E2E testsnpm test
- : run the Jest unit and integration testsnpm test:watch
- : run the tests in watch mode
The tests are in the __tests__/ directory and are run using [Jest]. They're
split into two files:
- unit.test.ts - mockist unit tests, to check specific internal detailsintegration.test.ts
- - integration tests using [SuperTest] with a simple
Express app using the middleware
There is also a smoke.test.js file containing E2E/smoke tests for a deployedbin/smoke.js
version of the package, used by . If the --local argument is-tag` version is installed from the registry and tested.
supplied to the script the local version is packaged and tested , otherwise
the specified
[Express]: https://expressjs.com/
[Jest]: https://jestjs.io/
[MessagePack]: https://msgpack.org/
[msgpack]: https://www.npmjs.com/package/msgpack
[SuperTest]: https://github.com/visionmedia/supertest
[1]: https://www.npmjs.com/package/@msgpack/msgpack