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.
const spec = require('./swagger.json')
const url = 'https://petstore.swagger.io/v2/'
const FetchBackend = require('swagger-fluent/backends/fetch')
const backend = new FetchBackend({ fetch, url })
const { Client } = require('swagger-fluent')
const client = new Client({ spec, backend })
const response = await client.pet.findByStatus.get({ parameters: { status: 'available' } })
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('swagger-fluent/backends/fetch')
RequestBackend(options)
const RequestBackend = require('swagger-fluent/backends/request')
SwaggerClientBackend(options)
Create a swagger-js-based backend.
const SwaggetClientBackend = require('swagger-fluent/backends/swagger-client')
The backend must implement an .http
method. swagger-fluent 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".