https://github.com/jadepeng/generator-swagger-2-ts
A Swagger Codegen for typescript and javascript
https://github.com/jadepeng/generator-swagger-2-ts
javascript swagger-codegen typescript
Last synced: 3 months ago
JSON representation
A Swagger Codegen for typescript and javascript
- Host: GitHub
- URL: https://github.com/jadepeng/generator-swagger-2-ts
- Owner: jadepeng
- License: other
- Created: 2018-04-25T03:14:16.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2023-01-05T12:54:27.000Z (over 3 years ago)
- Last Synced: 2025-07-24T19:56:28.093Z (10 months ago)
- Topics: javascript, swagger-codegen, typescript
- Language: JavaScript
- Size: 987 KB
- Stars: 78
- Watchers: 3
- Forks: 20
- Open Issues: 22
-
Metadata Files:
- Readme: README.cn.md
- License: LICENSE
Awesome Lists containing this project
README
# generator-swagger-2-ts [![NPM version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Dependency Status][daviddm-image]][daviddm-url]
>
一款基于 [Yeoman](http://yeoman.io)的swagger js/typescript代码生成器 ,借助这个软件包,可以生成一个访问swagger api 的js/typescript类.
## 安装
需要同时安装 [Yeoman](http://yeoman.io) 和 -swagger-2-ts
```bash
npm install -g yo
npm install -g generator-swagger-2-ts
```
然后cd到你的工作目录,执行:
```bash
yo swagger-2-ts
```
按提示
- 输入swagger-ui 地址,例如http://192.168.86.8:8051/swagger-ui.html,程序包会自动将这个url地址replace('swagger-ui.html', 'v2/api-docs')得到swagger-api-docs,然后下载后解析,生成api class
- 可选生成js 或者 typescript
- 可以自定义生成的api class名称、api文件名
- API 支持泛型
可以通过命令行直接传递参数
```bash
yo swagger-2-ts --swaggerUrl=http://localhost:8080/swagger-ui.html --className=API --type=typescript --outputFile=api.ts
```
- swaggerUrl: swagger ui url swaggerui地址
- className: API class name 类名
- type: typescript or javascipt
- outputFile: api 文件保存路径
## 生成代码demo:
```javascript
export type AccountUserInfo = {
disableTime?: string
isDisable?: number
lastLoginIp?: string
lastLoginPlace?: string
lastLoginTime?: string
openId?: string
}
export type BasePayloadResponse = {
data?: object
desc?: string
retcode?: string
}
/**
* User Account Controller
* @class UserAccountAPI
*/
export class UserAccountAPI {
/**
* changeUserState
* @method
* @name UserAccountAPI#changeUserState
* @param accountUserInfo - accountUserInfo
* @param $domain API域名,没有指定则使用构造函数指定的
*/
changeUserState(parameters: {
'accountUserInfo': AccountUserInfo,
$queryParameters?: object,
$domain?: string
}): Promise> {
let config: AxiosRequestConfig = {
baseURL: parameters.$domain || this.$defaultDomain,
url: '/userAccount/changeUserState',
method: 'PUT'
}
config.headers = {}
config.params = {}
config.headers[ 'Accept' ] = '*/*'
config.headers[ 'Content-Type' ] = 'application/json'
config.data = parameters.accountUserInfo
return axios.request(config)
}
/**
* changeUserState
* @method
* @name UserAccountAPI#changeUserState
* @param accountUserInfo - accountUserInfo
* @param $domain API域名,没有指定则使用构造函数指定的
*/
async changeUserStateAsync(parameters: {
'accountUserInfo': AccountUserInfo,
$queryParameters?: object,
$domain?: string
}): Promise {
let resp = await this.changeUserStateAsync(parameters);
return Promise.resolve(resp.data);
}
}
/**
* 管理系统接口描述
* @class API
*/
export class API {
/**
* API构造函数
* @param domain API域名
*/
constructor(domain?: string) {
this.$defaultDomain = domain || 'http://localhost:8080'
}
_UserAccountAPI: UserAccountAPI = null;
/**
* 获取 User Account Controller API
* return @class UserAccountAPI
*/
getUserAccountAPI(): UserAccountAPI {
if (!this._UserAccountAPI) {
this._UserAccountAPI = new UserAccountAPI(this.$defaultDomain)
}
return this._UserAccountAPI
}
}
```
## 使用
```javascript
import { API } from './api'
let api = new API('YOUR_API_HOST')
// add Header Authorization
api.withAuthorization("YOUR_TOKEN")
// add Interceptors
api.withInterceptors(
response => {
if (response.status === 200) {
return Promise.resolve(response)
} else {
return Promise.reject(response)
}
},
error => {
if (error.response.status) {
switch (error.response.status) {
// 401: 未登录
case 401:
console.error("身份验证失败,请关闭重新进入。")
break
// 403 token过期
case 403:
console.error("登录过期,请关闭重新进入。")
break
// 404请求不存在
case 404:
console.error("您访问的网页不存在。")
break
// 其他错误,直接抛出错误提示
default:
console.error(error.response.data.message)
}
return Promise.reject(error.response)
}
})
// in main.ts
api.getUserAccountAPI().changeUserState({
isDisable: 1
openId: 'open id'
}).then(resp=>{
console.log(resp)
})
```
## Getting To Know Yeoman
* Yeoman has a heart of gold.
* Yeoman is a person with feelings and opinions, but is very easy to work with.
* Yeoman can be too opinionated at times but is easily convinced not to be.
* Feel free to [learn more about Yeoman](http://yeoman.io/).
## 参考
- [swagger-js-codegen](https://github.com/wcandillon/swagger-js-codegen)
## License
Apache-2.0 © [jadepeng]()
[npm-image]: https://badge.fury.io/js/generator-swagger-2-ts.svg
[npm-url]: https://npmjs.org/package/generator-swagger-2-ts
[travis-image]: https://travis-ci.org/jadepeng/generator-swagger-2-ts.svg?branch=master
[travis-url]: https://travis-ci.org/jadepeng/generator-swagger-2-ts
[daviddm-image]: https://david-dm.org/jadepeng/generator-swagger-2-ts.svg?theme=shields.io
[daviddm-url]: https://david-dm.org/jadepeng/generator-swagger-2-ts