SuperAgent plugin providing support to JSON22 data format in your applications.
- Ready to use SuperAgent plugin
- Parse JSON22 body content
- Serialize data to JSON22
- Can be used with SuperTest
- Both CJS/ESM modules support
npm install superagent-json22
Add plugin to a request
import superagent from 'superagent';
import { json22Plugin } from 'superagent-json22';
async function sendData() {
try {
return await superagent
.post('https://example.com/api/data')
.use(json22Plugin())
.send(data);
} catch (e) {
console.error(e);
}
}
Old-fashioned javascript imports
const superagent = require('superagent');
const { json22Plugin } = require('superagent-json22');
Both stringify and parse methods of JSON22 accepts options. You may be interested to define such options at global level as well as with isolated client instance.
Json22RequestInterceptor
accepts the next options structure
interface Json22SuperagentPluginOptions {
json22ParseOptions?: Json22ParseOptions;
json22StringifyOptions?: Json22StringifyOptions;
}
See also Json22ParseOptions
and Json22StringifyOptions
at JSON22 API description
import superagent from 'superagent';
import { json22Plugin } from 'superagent-json22';
import { TypedModel } from './models/typed-model.js';
async function sendData() {
try {
return await superagent
.post('https://example.com/api/data')
.use(json22Plugin({
json22ParseOptions: { context: { TypedModel } },
}))
.send(data);
} catch (e) {
console.error(e);
}
}
import superagent from 'superagent';
import { json22Plugin } from 'superagent-json22';
import { TypedModel } from './models/typed-model.js';
const agent = superagent.agent().use(json22Plugin({
json22ParseOptions: { context: { TypedModel } },
}));
async function sendData() {
try {
return await agent.post('https://example.com/api/data').send(data);
} catch (e) {
console.error(e);
}
}
SuperTest uses SuperAgent under the hood. SuperAgent isn't well isolated by SuperTest, so you can easily use any SuperAgent plugin including superagent-json22. Here is the example.
import supertest from 'supertest';
import { appFactory } from '../lib/app/appFatory.js';
import { TypedModel } from '../lib/models/typed-model.js';
suite('Response tests', () => {
test('supertest with plugin', (done) => {
const app = appFactory();
supertest(app)
.post('/')
.use(json22Plugin({ json22ParseOptions: { context: { TypedModel } }}))
.send(data)
.expect(200)
.then(resp => done())
.catch(done);
});
});