/swagger-typescript

Primary LanguageTypeScriptMIT LicenseMIT

NPM

install size dependencies

⭐⭐⭐ If you would like to contribute, please refer to To do list and a list of open tasks.:star::star::star:

Migrate Swagger-Typescript v3 to Swagger-Typescript v4

Support OpenApi v3

An auto typescript/javascript code generator from swagger. Each endpoint will be constructed as a function, full type base.

For Example: Get method of '/Account' path will be this code in services.ts

import { getAccount } from "./services";

const response = await getAccount({ id: 1234 });

install

$ yarn add swagger-typescript

get start

Before running, add your config to swagger.config.json

swagger.config.json

{
  "url": "http://example.com/api/swagger.json",
  "dir": "./test"
}

run

yarn swag-ts

config.ts

This file automatically will be create after first run. You could change this file for customization. Don't change other files, if you want another config create Issue or PR.

baseConfig

const baseConfig: AxiosRequestConfig = {
  baseURL: "", // <--- Add your base url
  //other static configs
};

Now you can use APIs, So for advanced config read below.

swagger.config.json

For Example:

{
    "url": "https://generator3.swagger.io/openapi.json",
    "dir": "./test",
    "language": "typescript",
    "modelNaming":"camel",
    "modelPropertyNaming":"original",
    "enumPropertyNaming":"pascal",
    "serviceNaming":"canel",
    "tagNaming":"snake-upper",
    "ignore": {
        "headerParams": [
            "terminalId"
        ]
    }
}
[Key] [default] Comment
url Required Address of swagger.json
dir Required Address of output
language typescript export to "javascript" or "typescript"
methodName {method}{path} Supported mixed of "{method}{path}{operationId}". for Example: 'service{method}{path}'
modelNaming original camel or pascal or snake or snake-upper or original
modelPropertyNaming original camel or pascal or snake or snake-upper or original
enumPropertyNaming original camel or pascal or snake or snake-upper or original
serviceNaming original camel or pascal or snake or snake-upper or original
tagNaming original camel or pascal or snake or snake-upper or original
ignore Optional Ignore headers from type for Example: "ignore": { "headerParams": ["terminalId"]}

config.ts

This file automatically will be created after first run. You could change this file for customization. Don't change other files, if you want another config create Issue or PR.

getAxiosInstance

getAxiosInstance used for create an instance of axios request you can customize that for what you needed

baseConfig

baseConfig used for get static configs and headers. if you need some dynamic configs like add authentication to headers use requestConfig.headers.authorization into of axiosInstance.interceptors.request.use function.

Typescript / Factories

Operations grouped by tags like Swagger UI.


import { getApi, getService } from "../apis-generated/serviceFactory";

// Api factory
const apiUsuario = getApi("Usuario");

// Service factory
let response = await getService("Usuario","getUsuario")({ id: this.controller.IdUsuario });

Stories

why-you-should-use-swagger-typescript-for-generate-apis-code