电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Vue 使用typescript如何優(yōu)雅的調(diào)用swagger API

瀏覽:131日期:2022-12-01 13:53:27

Swagger 是一個(gè)規(guī)范和完整的框架,用于生成、描述、調(diào)用和可視化 RESTful 風(fēng)格的 Web 服務(wù),后端集成下Swagger,然后就可以提供一個(gè)在線文檔地址給前端同學(xué)。

Vue 使用typescript如何優(yōu)雅的調(diào)用swagger API

前端如何優(yōu)雅的調(diào)用呢?

入門版

根據(jù)文檔,用axios自動(dòng)來調(diào)用

// 應(yīng)用管理相關(guān)接口import axios from ’../interceptors.js’// 獲取應(yīng)用列表export const getList = (data) => { return axios({ url: ’/app/list?sort=createdDate,desc’, method: ’get’, params: data })}

這里的問題是,有多少個(gè)接口,你就要編寫多少個(gè)函數(shù),且數(shù)據(jù)結(jié)構(gòu)需要查看文檔獲取。

進(jìn)階版本

使用typescript,編寫API,通過Type定義數(shù)據(jù)結(jié)構(gòu),進(jìn)行約束。

問題: 還是需要手寫

優(yōu)雅版本

swagger 其實(shí)是一個(gè)json-schema描述文檔,我們可以基于此,自動(dòng)生成。

很早之前,寫過一個(gè)插件 generator-swagger-2-t, 簡(jiǎn)單的實(shí)現(xiàn)了將swagger生成typescript api。

今天,筆者對(duì)這個(gè)做了升級(jí),方便支持后端返回的泛型數(shù)據(jù)結(jié)構(gòu)。

安裝

需要同時(shí)安裝 Yeoman 和 -swagger-2-ts

npm install -g generator-swagger-2-ts

然后cd到你的工作目錄,執(zhí)行:

yo swagger-2-ts

按提示

輸入swagger-ui 地址,例如http://192.168.86.8:8051/swagger-ui.html 可選生成js 或者 typescript 可以自定義生成的api class名稱、api文件名 API 支持泛型

也可以通過命令行直接傳遞參數(shù)

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:

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域名,沒有指定則使用構(gòu)造函數(shù)指定的 */ changeUserState(parameters: { ’accountUserInfo’: AccountUserInfo, $queryParameters?: any, $domain?: string }): Promise<AxiosResponse<BasePayloadResponse>> { 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) } _UserAccountAPI: UserAccountAPI = null; /** * 獲取 User Account Controller API * return @class UserAccountAPI */ getUserAccountAPI(): UserAccountAPI { if (!this._UserAccountAPI) { this._UserAccountAPI = new UserAccountAPI(this.$defaultDomain) } return this._UserAccountAPI }}/** * 管理系統(tǒng)接口描述 * @class API */export class API { /** * API構(gòu)造函數(shù) * @param domain API域名 */ constructor(domain?: string) { this.$defaultDomain = domain || ’http://localhost:8080’ }}

使用

import { API } from ’./http/api/manageApi’// in main.tslet api = new API('/api/')api.getUserAccountAPI().changeUserState({ isDisable: 1 openId: ’open id’})

Vue中最佳實(shí)踐

main.ts 全局定義

import { API } from ’./http/api/manageApi’Vue.prototype.$manageApi = new API(’/api/’)

增加.d.ts

增加types文件,方便使用智能提示

import { API } from ’@/http/api/manageApi’import { MarkAPI } from ’@/http/api/mark-center-api’declare module 'vue/types/vue' { interface Vue { $manageApi: API $markApi: MarkAPI }}

實(shí)際使用

現(xiàn)在可以在vue里直接調(diào)用了。

Vue 使用typescript如何優(yōu)雅的調(diào)用swagger API

this.$manageApi .getUserAccountAPI().changeUserState({isDisable: 1, openId: ’open id’})

開源地址

https://github.com/jadepeng/generator-swagger-2-ts

總結(jié)

到此這篇關(guān)于Vue 使用typescript如何優(yōu)雅的調(diào)用swagger API的文章就介紹到這了,更多相關(guān)Vue 使用typescript內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Vue
相關(guān)文章:
主站蜘蛛池模板: 福州时代广告制作装饰有限公司-福州广告公司广告牌制作,福州展厅文化墙广告设计, | 精密交叉滚子轴承厂家,转盘轴承,YRT转台轴承-洛阳千协轴承 | 搬运设备、起重设备、吊装设备—『龙海起重成套设备』 | 中开泵,中开泵厂家,双吸中开泵-山东博二泵业有限公司 | 无菌检查集菌仪,微生物限度仪器-苏州长留仪器百科 | 工业PH计|工业ph酸度计|在线PH计价格-合肥卓尔仪器仪表有限公司 济南画室培训-美术高考培训-山东艺霖艺术培训画室 | 智慧农业|农业物联网|现代农业物联网-托普云农物联网官方网站 | 硬齿面减速机_厂家-山东安吉富传动设备股份有限公司 | 鲸鱼视觉 -数字展厅多媒体互动展示制作公司 | 英国雷迪地下管线探测仪-雷迪RD8100管线仪-多功能数字听漏仪-北京迪瑞进创科技有限公司 | 丹佛斯变频器-Danfoss战略代理经销商-上海津信变频器有限公司 | 2025世界机器人大会_IC China_半导体展_集成电路博览会_智能制造展览网 | 呼末二氧化碳|ETCO2模块采样管_气体干燥管_气体过滤器-湖南纳雄医疗器械有限公司 | 水环真空泵厂家,2bv真空泵,2be真空泵-淄博真空设备厂 | 法钢特种钢材(上海)有限公司 - 耐磨钢板、高强度钢板销售加工 阀门智能定位器_电液动执行器_气动执行机构-赫尔法流体技术(北京)有限公司 | 刮板输送机,粉尘加湿搅拌机,螺旋输送机,布袋除尘器 | 博医通医疗器械互联网供应链服务平台_博医通 | 杭州顺源过滤机械有限公司官网-压滤机_板框压滤机_厢式隔膜压滤机厂家 | 丁基胶边来料加工,医用活塞边角料加工,异戊二烯橡胶边来料加工-河北盛唐橡胶制品有限公司 | 水质传感器_水质监测站_雨量监测站_水文监测站-山东水境传感科技有限公司 | 铝机箱_铝外壳加工_铝外壳厂家_CNC散热器加工-惠州市铂源五金制品有限公司 | 口臭的治疗方法,口臭怎么办,怎么除口臭,口臭的原因-口臭治疗网 | 仿清水混凝土_清水混凝土装修_施工_修饰_保护剂_修补_清水混凝土修复-德州忠岭建筑装饰工程 | 纸张环压仪-纸张平滑度仪-杭州纸邦自动化技术有限公司 | 浙江筋膜枪-按摩仪厂家-制造商-肩颈按摩仪哪家好-温州市合喜电子科技有限公司 | 高铝砖-高铝耐火球-高铝耐火砖生产厂家-价格【荣盛耐材】 | 客服外包专业服务商_客服外包中心_网萌科技 | 柴油机_柴油发电机_厂家_品牌-江苏卡得城仕发动机有限公司 | 上海单片机培训|重庆曙海培训分支机构—CortexM3+uC/OS培训班,北京linux培训,Windows驱动开发培训|上海IC版图设计,西安linux培训,北京汽车电子EMC培训,ARM培训,MTK培训,Android培训 | 振动筛-交叉筛-螺旋筛-滚轴筛-正弦筛-方形摇摆筛「新乡振动筛厂家」 | 立式壁挂广告机厂家-红外电容触摸一体机价格-华邦瀛 | 纳米涂料品牌 防雾抗污纳米陶瓷涂料厂家_虹瓷科技 | 阜阳在线-阜阳综合门户| 艺术漆十大品牌_艺术涂料加盟代理_蒙太奇艺术涂料厂家品牌|艺术漆|微水泥|硅藻泥|乳胶漆 | 新疆十佳旅行社_新疆旅游报价_新疆自驾跟团游-新疆中西部国际旅行社 | [官网]叛逆孩子管教_戒网瘾学校_全封闭问题青少年素质教育_新起点青少年特训学校 | 退火炉,燃气退火炉,燃气热处理炉生产厂家-丹阳市丰泰工业炉有限公司 | 济南货架定做_仓储货架生产厂_重型货架厂_仓库货架批发_济南启力仓储设备有限公司 | 北京公司注册_代理记账_代办商标注册工商执照-企力宝 | 纸张环压仪-纸张平滑度仪-杭州纸邦自动化技术有限公司 | 北京开业庆典策划-年会活动策划公司-舞龙舞狮团大鼓表演-北京盛乾龙狮鼓乐礼仪庆典策划公司 |