Socket
Socket
Sign inDemoInstall

openapi-data-validator

Package Overview
Dependencies
17
Maintainers
1
Versions
28
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    openapi-data-validator

Automatically validate API requests and responses with OpenAPI 3.


Version published
Weekly downloads
525
decreased by-39.38%
Maintainers
1
Install size
2.52 MB
Created
Weekly downloads
 

Readme

Source

OpenAPI Data Validator

Lightweight OpenAPI complete request model validator. Fast, unopinionated, full featured validator for API requests that utilize OpenAPI docs for API documentation.

This is an open source project managed by the Authress Engineering team.

Authress Engineering npm version

Usage

It is simple, and that's all there is to it!

npm install openapi-data-validator --save
const { OpenApiValidator } = require('openapi-data-validator');
const spec = require('./openapi.json');

const openApiValidator = new OpenApiValidator({ apiSpec: spec });
const validator = openApiValidator.createValidator();

// Configure this to the client's request. It will resolve the expected schema in the spec using the method and route defined, and validate the request parameters.
const newRequest = {
  method: 'GET',
  // Matched openapi specification generic route, this should be the generic `path` from the spec, such as `/resources/{resourceId}/`, it must match one of them exactly.
  route: request.route

  headers: { Authorization: 'Bearer Token' },
  
  // Query string parameters from the request
  query: { limit: 10 },
  
  // Body already parsed to JSON
  body: { field: true },

  // Path parameters
  path: { user: 'userId' }
};
await validator(newRequest);

Compile validator

For improved processing speed the validator can be pre-compiled from the spec

const openApiValidator = new OpenApiValidator({ apiSpec: spec, compiledFilePath: './compiledValidator.json' });
await openApiValidator.compileValidator();
// Later
const validator = await openApiValidator.loadValidation();

// ...
await validator(request);

Checkout the full: Async example

FAQs

Why not just use AJV

AJV is the best, but there are some things that just are very OpenAPI specific that don't make sense to be in the validator. Don't need them? Great, go use AJV.

  • Top level defined Path parameters - AJV doesn't understand
  • Inline request body definitions, AJV doesn't understand schema defined in the method, it has to be in a component
  • Body Content-Type validation - Request bodies with multiple content types allowed

Keywords

FAQs

Last updated on 31 Oct 2023

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc