fluent-openapi

A fluent client for OpenAPI and Swagger

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
fluent-openapi
8283.1.05 years ago6 years agoMinified + gzip package size for fluent-openapi in KB

Readme

fluent-openapi
!Build Statusbuild !Greenkeeper badgegreenkeeper
A fluent OpenAPI and Swagger client for JavaScript and Node.js.
fluent-client represents Path Item Object with chains of objects:
/api/v1/namespaces -> api.v1.namespaces

associates operations on a Path Item Object with functions:
/api/v1/namespaces -> api.v1.namespaces.get()

and represents Path Templating with function calls:
/api/v1/namespaces/{namespace}/pods -> api.v1.namespaces(namespace).pods

Configurable "backends" handle executing API calls by, for example, using fetch or Swagger Client. A backend can also perform error checking. The Swagger Client backend, for example, will perform the usual parameter and resolution checking that swagger-js performs and will throw those errors to the caller.

Using

const spec = require('./swagger.json')
const url = 'https://petstore.swagger.io/v2/'
const FetchBackend = require('fluent-openapi/backends/fetch')
const backend = new FetchBackend({ fetch, url })

const { Client } = require('fluent-openapi')
const client = new Client({ spec, backend })

const response = await client.pet.findByStatus.get({ parameters: { status: 'available' } })

API

Client(options)

Create a fluent client for an OpenAPI or Swagger specification.
  • options.spec - OpenAPI or Swagger specification.
  • options.backend - Object with an .http method that executes HTTP
r equests.
  • options.getNames(name, ancestors) - a function to translate each
path name to an alternate name or array of names. You could, for example, alias the resource "namespaces" to "namespace" and "ns".

FetchBackend(options)

Create a Fetch API-based backend.
  • options.fetch - fetch function (e.g.,
node-fetch or whatwg-fetch).
  • options.url - Base URL for HTTP API.

const FetchBackend = require('fluent-openapi/backends/fetch')

RequestBackend(options)

const RequestBackend = require('fluent-openapi/backends/request')

SwaggerClientBackend(options)

Create a swagger-js-based backend.
const SwaggetClientBackend = require('fluent-openapi/backends/swagger-client')

Custom backend

The backend must implement an .http method. fluent-openapi passes the following options to the .http method, and returns the result directly to the API caller.
  • options.body - JSONifable object.
  • options.method - HTTP method.
  • options.pathItemObject - Swagger/OpenAPI Path Item Object.
  • options.parameters - named query parameters.
  • options.qs - named query parameters (legacy).
  • options.pathname - URL pathname.
  • options.stream - true if called by a "stream method".