swagger-jscode
v1.1.8
Published
A Swagger codegen for JavaScript
Downloads
29
Maintainers
Readme
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 formaturl
using remote swagger api definitions, conflict withswagger
optiontargetFolder
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 friendlygetRequestFunctionName
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": "",
}
}