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
const swagger2JsCode = require('swagger-jscode');
const swaggerDefinitions = require('./swagger-api.json');
swagger2JsCode({
swagger: swaggerDefinitions,
httpBase: '../utils/fetch',
targetFolder: 'src/api',
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
import http from '../utils/fetch';
export const getUserList = function (query, headers, config = {}) {
return http.get(`/user`, {
params: query,
headers,
...config,
});
};
export const createUpdateUser = function (data, config = {}) {
return http.post(`/user`, {
data,
...config,
});
};
export const getUserById = function (params, config = {}) {
return http.get(`/user/${params.userId}`, {
...config,
});
};
API
Options
swagger
swagger api definitions in JSON formaturl
using remote swagger api definitions, conflict with swagger
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
{
"scripts": {
"generate-by-data":"sjc --swagger swagger-api.json",
"generate-by-url": "sjc --url http://mysite.com/v2/api-docs"
},
"devDependencies": {
"swagger-jscode": "",
}
}