A fluent client for OpenAPI and Swagger
npm install swagger-fluent[![Build Status][build]](https://travis-ci.org/silasbw/swagger-fluent) [![Greenkeeper badge][greenkeeper]](https://greenkeeper.io/)
[greenkeeper]: https://badges.greenkeeper.io/silasbw/swagger-fluent.svg
[build]: https://travis-ci.org/silasbw/swagger-fluent.svg?branch=master
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.
`js
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' } })
`
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 HTTPoptions.getNames(name, ancestors)
r equests.
* - 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".
Create a Fetch API-based
backend.
options.fetch - fetch function (e.g.*,
node-fetch or
whatwg-fetch).
* options.url - Base URL for HTTP API.
`js`
const FetchBackend = require('swagger-fluent/backends/fetch')
`js`
const RequestBackend = require('swagger-fluent/backends/request')
Create a swagger-js-based
backend.
`js`
const SwaggetClientBackend = require('swagger-fluent/backends/swagger-client')
The backend must implement an .http method. swagger-fluent passes.http
the following options to the 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".
*