引入 @umijs/openapi 组件,通过swagger的api自动生成接口对应的api
This commit is contained in:
parent
7ee3a1d240
commit
095ea0a45c
1
.gitignore
vendored
1
.gitignore
vendored
@ -29,3 +29,4 @@ coverage
|
||||
|
||||
*.tsbuildinfo
|
||||
/yarn.lock
|
||||
/package-lock.json
|
||||
|
7
openapi.config.js
Normal file
7
openapi.config.js
Normal file
@ -0,0 +1,7 @@
|
||||
import { generateService } from '@umijs/openapi'
|
||||
|
||||
generateService({
|
||||
requestLibPath: "import request from '@/request'",
|
||||
schemaPath: 'http://localhost:8123/api/v2/api-docs',
|
||||
serversPath: './src',
|
||||
})
|
@ -10,7 +10,8 @@
|
||||
"build-only": "vite build",
|
||||
"type-check": "vue-tsc --build",
|
||||
"lint": "eslint . --fix",
|
||||
"format": "prettier --write src/"
|
||||
"format": "prettier --write src/",
|
||||
"openapi": "node openapi.config.js"
|
||||
},
|
||||
"dependencies": {
|
||||
"ant-design-vue": "4.x",
|
||||
@ -22,6 +23,7 @@
|
||||
"devDependencies": {
|
||||
"@tsconfig/node22": "^22.0.2",
|
||||
"@types/node": "^22.15.32",
|
||||
"@umijs/openapi": "^1.13.15",
|
||||
"@vitejs/plugin-vue": "^6.0.0",
|
||||
"@vue/eslint-config-prettier": "^10.2.0",
|
||||
"@vue/eslint-config-typescript": "^14.5.1",
|
||||
@ -31,6 +33,7 @@
|
||||
"jiti": "^2.4.2",
|
||||
"npm-run-all2": "^8.0.4",
|
||||
"prettier": "3.5.3",
|
||||
"tslib": "^2.8.1",
|
||||
"typescript": "~5.8.0",
|
||||
"vite": "^7.0.0",
|
||||
"vite-plugin-vue-devtools": "^7.7.7",
|
||||
|
8
src/api/index.ts
Normal file
8
src/api/index.ts
Normal file
@ -0,0 +1,8 @@
|
||||
// @ts-ignore
|
||||
/* eslint-disable */
|
||||
// API 更新时间:
|
||||
// API 唯一标识:
|
||||
import * as mainController from './mainController'
|
||||
export default {
|
||||
mainController,
|
||||
}
|
11
src/api/mainController.ts
Normal file
11
src/api/mainController.ts
Normal file
@ -0,0 +1,11 @@
|
||||
// @ts-ignore
|
||||
/* eslint-disable */
|
||||
import request from '@/request'
|
||||
|
||||
/** health GET /api/health */
|
||||
export async function healthUsingGet(options?: { [key: string]: any }) {
|
||||
return request<API.RObject_>('/api/health', {
|
||||
method: 'GET',
|
||||
...(options || {}),
|
||||
})
|
||||
}
|
7
src/api/typings.d.ts
vendored
Normal file
7
src/api/typings.d.ts
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
declare namespace API {
|
||||
type RObject_ = {
|
||||
code?: number
|
||||
data?: Record<string, any>
|
||||
msg?: string
|
||||
}
|
||||
}
|
47
src/request.ts
Normal file
47
src/request.ts
Normal file
@ -0,0 +1,47 @@
|
||||
import axios from 'axios'
|
||||
import { message } from 'ant-design-vue'
|
||||
|
||||
// 创建 Axios 实例
|
||||
const myAxios = axios.create({
|
||||
baseURL: 'http://localhost:8123',
|
||||
timeout: 60000,
|
||||
withCredentials: true,
|
||||
})
|
||||
|
||||
// 全局请求拦截器
|
||||
myAxios.interceptors.request.use(
|
||||
function (config) {
|
||||
// Do something before request is sent
|
||||
return config
|
||||
},
|
||||
function (error) {
|
||||
// Do something with request error
|
||||
return Promise.reject(error)
|
||||
},
|
||||
)
|
||||
|
||||
// 全局响应拦截器
|
||||
myAxios.interceptors.response.use(
|
||||
function (response) {
|
||||
const { data } = response
|
||||
// 未登录
|
||||
if (data.code === 40100) {
|
||||
// 不是获取用户信息的请求,并且用户目前不是已经在用户登录页面,则跳转到登录页面
|
||||
if (
|
||||
!response.request.responseURL.includes('user/get/login') &&
|
||||
!window.location.pathname.includes('/user/login')
|
||||
) {
|
||||
message.warning('请先登录')
|
||||
window.location.href = `/user/login?redirect=${window.location.href}`
|
||||
}
|
||||
}
|
||||
return response
|
||||
},
|
||||
function (error) {
|
||||
// Any status codes that falls outside the range of 2xx cause this function to trigger
|
||||
// Do something with response error
|
||||
return Promise.reject(error)
|
||||
},
|
||||
)
|
||||
|
||||
export default myAxios
|
Loading…
Reference in New Issue
Block a user