swagger-jscode

1.1.8 • Public • Published

JS Code generation using Swagger 2.x API's

Install

npm install --save-dev swagger-jscode

Example

Codes: https://github.com/Derek-Hu/swagger-jscode/tree/master/example

example
├── index.js
└── swagger-api.json
// content of file index.js
const swagger2JsCode = require('swagger-jscode');
const swaggerDefinitions = require('./swagger-api.json');
swagger2JsCode({
    swagger: swaggerDefinitions,
    // Provide your own HTTP Client
    httpBase: '../utils/fetch',
    // Folder which JS Code Generated into
    targetFolder: 'src/api',
    // Folder which Data Strucuture Code Generated into
    difinitionFolder: 'src/api/types'
});

Run codes below will generate codes in folder api.

example
├── index.js
├── swagger-api.json
└── src
    └── api
        ├── UserController.js
        └── types
            └── UserEntity.js
// content of file UserController.js
 
/**
 * @typedef { import("./types/UserEntity.js") }
 */
import http from '../utils/fetch';
 
/**
 * Get All Users
 * @param {Object} [query] params in url search
 * @param {string} [query.name] Search User by name
 * @param {Object} headers params in header
 * @param {string} headers.authorization JWT Token
 * @param {Object} [config] custom attributes
 */
export const getUserList = function (query, headers, config = {}) {
  return http.get(`/user`, {
    params: query,
    headers,
    ...config,
  }); 
};
 
/**
 * Create or Update User
 * @param {Object} data params in http body or form data
 * @param {UserEntity} data.user User Detail
 * @param {Object} [config] custom attributes
 */
export const createUpdateUser = function (data, config = {}) {
  return http.post(`/user`, {
    data,
    ...config,
  }); 
};
 
/**
 * Get User Detail
 * @param {Object} params params in url path
 * @param {string} params.userId User Id
 * @param {Object} [config] custom attributes
 */
export const getUserById = function (params, config = {}) {
  return http.get(`/user/${params.userId}`, {
    ...config,
  }); 
};
 
// content of file UserEntity.js
/**
 * @typedef {Object} UserEntity
 * @property {string=} name - User Name
 * @property {int=} age - User Age
 * @property {Array.<string>=} cards
 */

API

Options

  • swagger swagger api definitions in JSON format
  • url using remote swagger api definitions, conflict with swagger option
  • targetFolder target folder when generate js code. Default value: src/api
  • difinitionFolder target folder when generate swagger definitions(data structure),Default value: src/api/types
  • httpBase Promise based HTTP client. Default Value: 'axios'. The client should support all HTTP methods and has the same signature below
httpBase.[get|put|post|delete...](url, {
    params,
    data,
    headers,
    ...customerConfig
})
  • getAPIFileName function(name:String) => String transform generated file name to more friendly
  • getRequestFunctionName function(method:Method) => String transform methods in generated file name to more friendly.Method has the full method definitions, View Swagger Spec for detail: https://swagger.io/docs/specification/basic-structure/

Using in CLI

Provided command for swagger js code generate: sjc

// package.json
{
    "scripts": {
        "generate-by-data":"sjc --swagger swagger-api.json",
        "generate-by-url": "sjc --url http://mysite.com/v2/api-docs" 
    },
    "devDependencies": {
       "swagger-jscode": "", 
    }
}

Package Sidebar

Install

npm i swagger-jscode

Weekly Downloads

11

Version

1.1.8

License

MIT

Unpacked Size

37.4 kB

Total Files

14

Last publish

Collaborators

  • hubenlv