最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2020年09月01日 09:11:22   作者:JadePeng  
這篇文章主要介紹了Vue 使用typescript如何優(yōu)雅的調(diào)用swagger API,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

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

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

入門版

根據(jù)文檔,用axios自動(dòng)來(lái)調(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
 })
}

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

進(jìn)階版本

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

問(wèn)題: 還是需要手寫

優(yōu)雅版本

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

很早之前,寫過(guò)一個(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

按提示

也可以通過(guò)命令行直接傳遞參數(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.ts
let 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)用了。

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)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue實(shí)現(xiàn)動(dòng)態(tài)控制表格列的顯示隱藏

    vue實(shí)現(xiàn)動(dòng)態(tài)控制表格列的顯示隱藏

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)動(dòng)態(tài)控制表格列的顯示隱藏,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • vue3如何使用ref獲取元素

    vue3如何使用ref獲取元素

    這篇文章主要介紹了vue3如何使用ref獲取元素,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Vue3中SetUp函數(shù)的參數(shù)props、context詳解

    Vue3中SetUp函數(shù)的參數(shù)props、context詳解

    我們知道setup函數(shù)是組合API的核心入口函數(shù),下面這篇文章主要給大家介紹了關(guān)于Vue3中SetUp函數(shù)的參數(shù)props、context的相關(guān)資料,需要的朋友可以參考下
    2021-07-07
  • element中el-autocomplete的常見用法示例

    element中el-autocomplete的常見用法示例

    這篇文章主要給大家介紹了關(guān)于element中el-autocomplete的常見用法的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用element具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-03-03
  • vue中$refs, $emit, $on, $once, $off的使用詳解

    vue中$refs, $emit, $on, $once, $off的使用詳解

    這篇文章主要介紹了vue中$refs, $emit, $on, $once, $off的使用詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-05-05
  • 封裝一個(gè)更易用的Dialog組件過(guò)程詳解

    封裝一個(gè)更易用的Dialog組件過(guò)程詳解

    這篇文章主要為大家介紹了封裝一個(gè)更易用的Dialog組件過(guò)程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • 詳解vue 在移動(dòng)端體驗(yàn)上的優(yōu)化解決方案

    詳解vue 在移動(dòng)端體驗(yàn)上的優(yōu)化解決方案

    這篇文章主要介紹了vue 在移動(dòng)端體驗(yàn)上的優(yōu)化解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Vue實(shí)現(xiàn)簡(jiǎn)單跑馬燈特效

    Vue實(shí)現(xiàn)簡(jiǎn)單跑馬燈特效

    這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)簡(jiǎn)單跑馬燈特效,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • vuex通過(guò)getters訪問(wèn)數(shù)據(jù)為undefined問(wèn)題及解決

    vuex通過(guò)getters訪問(wèn)數(shù)據(jù)為undefined問(wèn)題及解決

    這篇文章主要介紹了vuex通過(guò)getters訪問(wèn)數(shù)據(jù)為undefined問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Vue.js實(shí)現(xiàn)雙向數(shù)據(jù)綁定方法(表單自動(dòng)賦值、表單自動(dòng)取值)

    Vue.js實(shí)現(xiàn)雙向數(shù)據(jù)綁定方法(表單自動(dòng)賦值、表單自動(dòng)取值)

    今天小編就為大家分享一篇Vue.js實(shí)現(xiàn)雙向數(shù)據(jù)綁定方法(表單自動(dòng)賦值、表單自動(dòng)取值),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08

最新評(píng)論

雷山县| 英山县| 松滋市| 沙坪坝区| 西畴县| 金昌市| 昌乐县| 无棣县| 彭阳县| 怀远县| 澄江县| 刚察县| 综艺| 宜州市| 麻栗坡县| 宁都县| 青海省| 旬阳县| 名山县| 漳浦县| 朝阳区| 蒲江县| 西城区| 达州市| 邹城市| 五大连池市| 若羌县| 筠连县| 平昌县| 涞源县| 陆良县| 陆丰市| 开封县| 盱眙县| 广宁县| 南昌市| 衡山县| 安远县| 大关县| 修武县| 偏关县|