引入封装axios
This commit is contained in:
parent
853567e4f8
commit
ff3d02d3b8
30
src/api/auth.js
Normal file
30
src/api/auth.js
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
|
||||||
|
/**
|
||||||
|
*axios封装使用实例
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
import request from '@/utils/request'
|
||||||
|
// 对应request.js export default request 可更改默认的baseURL
|
||||||
|
// const api = request.create({ baseURL: 'http://localhost:8081' })
|
||||||
|
|
||||||
|
// **全局唯一 Axios 实例**
|
||||||
|
// 对应request.js export default (params) => Factory(params)
|
||||||
|
// const api = request({ baseURL: 'http://localhost:8080' })
|
||||||
|
|
||||||
|
// 示例请求
|
||||||
|
// export function login (params) {
|
||||||
|
// return request({
|
||||||
|
// url: '/auth/login',
|
||||||
|
// method: 'post',
|
||||||
|
// data: params
|
||||||
|
// })
|
||||||
|
// }
|
||||||
|
// 示例请求
|
||||||
|
// export const login = (params) => api.post('/auth/login', params)
|
||||||
|
// export const login = (params) => request.post('/auth/login', params)
|
||||||
|
|
||||||
|
// 用户登入
|
||||||
|
export const login = (params) => request.post('/auth/login', params)
|
||||||
|
// 用户注册
|
||||||
|
export const register = (params) => request.post('/auth/register', params)
|
10
src/api/user.js
Normal file
10
src/api/user.js
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 示例请求
|
||||||
|
export function getUserInfo () {
|
||||||
|
return request({
|
||||||
|
url: '/user/info',
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
export const login = (userData) => request.post('/users', userData)
|
@ -4,9 +4,6 @@ import 'element-plus/dist/index.css'
|
|||||||
import App from './App.vue'
|
import App from './App.vue'
|
||||||
import router from './router'
|
import router from './router'
|
||||||
import store from './store'
|
import store from './store'
|
||||||
import axios from 'axios'
|
|
||||||
|
|
||||||
axios.defaults.baseURL = 'http://localhost:8080'
|
|
||||||
|
|
||||||
const app = createApp(App)
|
const app = createApp(App)
|
||||||
app.use(store)
|
app.use(store)
|
||||||
|
74
src/utils/request.js
Normal file
74
src/utils/request.js
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
|
||||||
|
/**
|
||||||
|
*axios封装实例
|
||||||
|
*/
|
||||||
|
|
||||||
|
// 第一步我们先引入axios模块
|
||||||
|
import axios from 'axios'
|
||||||
|
|
||||||
|
// 这里的话有token的需求我们可以获取一下token,方便我们进行请求的时候使用
|
||||||
|
function getToken () {
|
||||||
|
// 这里可以根据你项目具体来获取
|
||||||
|
const token = window.sessionStorage.getItem('token')
|
||||||
|
return token || ''
|
||||||
|
}
|
||||||
|
// 第二步我们创建一个axios实例对象,然后用函数Factory封装一下
|
||||||
|
function Factory ({ baseURL, code, msg, callFail }) {
|
||||||
|
const $http = axios.create({
|
||||||
|
baseURL,
|
||||||
|
timeout: 1000 * 60 * 5 // 超时时间
|
||||||
|
})
|
||||||
|
// 请求拦截器,我们可以在请求拦截器中设置token,或者对请求进行一些处理
|
||||||
|
$http.interceptors.request.use(
|
||||||
|
(config) => {
|
||||||
|
// 这里我们可以设置token
|
||||||
|
const token = getToken()
|
||||||
|
if (token) {
|
||||||
|
config.headers.Authorization = token
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
headers: {
|
||||||
|
// 这里我们还可以设置请求头
|
||||||
|
'Content-Type': 'application/json;charset=UTF-8'
|
||||||
|
// ......
|
||||||
|
},
|
||||||
|
...config,
|
||||||
|
validateStatus: (status) => {
|
||||||
|
// 这里我们设置状态码的判断条件,如果返回的状态码在200到300之间就表示请求成功,否则就是失败
|
||||||
|
return (status >= 200 && status < 300) || status === 401
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
(error) => {
|
||||||
|
// 这里我们处理请求错误
|
||||||
|
return Promise.reject(error)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
// 响应拦截器,我们可以在响应拦截器中返回的数据或者错误信息进行处理
|
||||||
|
$http.interceptors.response.use((response) => {
|
||||||
|
// 这里我们处理响应数据
|
||||||
|
const data = response.data
|
||||||
|
if (+data.code === 200 || +data.code === 0) {
|
||||||
|
return data
|
||||||
|
} else if (+data.code === 401) {
|
||||||
|
console.error('请求报错提示:token失效,请重新登录')
|
||||||
|
} else {
|
||||||
|
console.error('请求报错提示:', data, msg || '请求失败')
|
||||||
|
}
|
||||||
|
return Promise.reject(data.msg || '请求失败')
|
||||||
|
},
|
||||||
|
error => {
|
||||||
|
// 这里我们处理响应错误
|
||||||
|
console.error('请求报错提示:', error, msg || '请求失败')
|
||||||
|
return Promise.reject(error)
|
||||||
|
})
|
||||||
|
return $http
|
||||||
|
}
|
||||||
|
// 默认导出一个 `request` 方法,同时支持创建 `api` 实例
|
||||||
|
const request = Factory({ baseURL: 'http://localhost:8080' })
|
||||||
|
|
||||||
|
// 第三步我们导出axios实例对象
|
||||||
|
export default request
|
||||||
|
|
||||||
|
// export default (params) => Factory(params)() // 不理解
|
||||||
|
// export default (params) => Factory(params) // 为什么上面的不能用
|
@ -63,6 +63,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import { login } from '@/api/auth'
|
||||||
export default {
|
export default {
|
||||||
name: 'LoginPage',
|
name: 'LoginPage',
|
||||||
data () {
|
data () {
|
||||||
@ -86,17 +87,31 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
handleLogin () {
|
async handleLogin () {
|
||||||
|
// const params = {
|
||||||
|
// userName: this.loginForm.username,
|
||||||
|
// password: this.loginForm.password
|
||||||
|
// }
|
||||||
if (this.loading) return
|
if (this.loading) return
|
||||||
this.$refs.loginForm.validate((valid) => {
|
this.$refs.loginForm.validate(async (valid) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
this.loading = true
|
this.loading = true
|
||||||
console.log('登录信息:', this.loginForm)
|
console.log('登录信息:', this.loginForm)
|
||||||
// 模拟登录请求
|
try {
|
||||||
setTimeout(() => {
|
// 发送登录请求,注意这里要用 this.loginForm 作为参数
|
||||||
|
const response = await login(this.loginForm)
|
||||||
|
|
||||||
|
if (response.code === 200) {
|
||||||
|
this.$message.success('登录成功')
|
||||||
|
// 这里可以存储 token 或跳转页面
|
||||||
|
} else {
|
||||||
|
this.$message.error(response.msg || '登录失败')
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
this.$message.error(error.message || '请求失败')
|
||||||
|
} finally {
|
||||||
this.loading = false
|
this.loading = false
|
||||||
this.$message.success('登录成功')
|
}
|
||||||
}, 2000)
|
|
||||||
} else {
|
} else {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
@ -8,4 +8,4 @@ module.exports = {
|
|||||||
host: 'localhost', // 可选:设置为 '0.0.0.0' 后台访问
|
host: 'localhost', // 可选:设置为 '0.0.0.0' 后台访问
|
||||||
open: true // 自动打开浏览器
|
open: true // 自动打开浏览器
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user