swagger-js-api-generator

0.0.1 • Public • Published

Swagger JS API Generator

This tool allows you to automatically generate an api object from a given swagger schema. Since this tool doesn't define how resource should be fetched, it is intended to be composed in to a platform or framework specific resource handler.

If this library is require'd from Node, it comes with .fetch and .save methods to allow you to pull a schema from a given swagger resource listing. When the library is used client side, it is only a factory function creates an API object from a schema object. The common flow would be to generate the schema during your build process and embed it in to your client-side app.

This tool differs from swagger-js in that it doesn't define how the resources will be fetched, instead it takes in a callback function which is called when ever a resource is being called, making it simple to tie the request logic to the platform or framework of your choosing. This library is also an order of magnitude smaller, weighing in at ~1kb, this is primarily because it doesn't ship with the methods of interacting with the API server as swagger-js does.

Example

// in nodejs
var schema = require('swagger-schema');
schema.save('http://api.app.com/api-docs', 'my-schema.json');
// in a browser
 
// Assuming you've loaded my-schema as mySchema
var api = swaggerSchema(mySchema, function(operation){
  return function(data){
    console.log(operation.nickname, 'called with', data);
  }
});
 
api.user.create('kanye');
// console: 'create called with kanye';

Browser API

var api = swaggerSchema(schemaObject, operationHandler)

schemaObject (an object)

An object created by the swagger-schema nodejs library. It's basically a single json object of the resource listing and all associated api declarations.

operationHandler (a function)

Operation handler is a function which creates the request handler for a given operation. The request handler is a function which is called whenever a client interacts with the api (e.g. api.user.get() would call the request handler that was returned for the 'get' operation).

For example, api.user.get('kanye', kanyeHandler) calls the operation with the nickname 'get' on the 'user' resource with 'kanye' as the first argument and a callback as the second. A very basic handler may look like this:

function operationHandler(operation){
  var endpoint = operation.apiObject.basePath + operation.path;
 
  return function(data, callback){
    var url = endpoint.replace('{userName}', data);
 
    var req = new XMLHttpRequest();
    req.onload = function(){
      callback(this.responseText);
    };
    req.open(this.method, url, true);
    req.send();
  }
}
 
function kanyeHandler(text){
  console.log('kanye is', text);
}

From the this variable in the operation handler you can access the entire schema of the API:

Readme

Keywords

none

Package Sidebar

Install

npm i swagger-js-api-generator

Weekly Downloads

1

Version

0.0.1

License

none

Last publish

Collaborators

  • ozanturgut