vue - axios -登录退出显示用户资料小案例

目录

一、axios是什么

二、axios的特点

  三、axios安装

 四、在vue全局挂载

 登录退出显示用户资料小案例(post方法)

五、axios便捷方法

六、axios基础方法 

 七、axios执行结果

八、config axios配置 

 九、restFul


一、axios是什么

axios时目前最流行的ajax封装库之一,用于很方便地实现ajax请求的发送。

二、axios的特点

  1. 前后端都可以使用
  2.  不依赖dom
  3.  拦截扩展强大
  4. 可封装复用性强

  三、axios安装

打开cmd命令窗口 cd到项目目录

输入命令:  npm i axios -S 

然后运行项目

 四、在vue全局挂载

1、导入(在mian.js中) 

import axios from 'axios'

 2、挂载(在mian.js中)

Vue.prototype.$axios = axios;

 3、使用(在App.vue中)

this.$axios.xxx

 登录退出显示用户资料小案例(post方法)

<template>
	<!-- 登录退出小案例 -->
	<!-- 试用账号:奇酷彭于晏 密码:qkpyy -->
	<div>
		<!-- 通过判断本地存储token来切换显示容器 -->
		<div v-if="token">
			<p>姓名:{{userInfo.name}}</p>
			<p>等级:{{userInfo.rank}}</p>
			<p>积分:{{userInfo.score}}</p>
			<button type="button" @click="loginout">退出</button>
		</div>
		<div v-else>
			<h1>登录页面</h1>
			用户名<input type="text" v-model="user.name" /><br>
			密码<input type="password" v-model="user.password" />
			<button type="button" @click="login">登录</button>
		</div>
	</div>
</template>
<script>
	export default {
		data() {
			return {
				user: {//此处对象名必须与下侧 axios方法中请求数据名称一致吗???
					name: '',
					password: ''
				},
				// 从本地获取用户信息 parse把json字符串转换为js对象
				userInfo: JSON.parse(localStorage.getItem("userInfo")||"{}"),//用户数据
				// 从本地获取token,字符串不需要pase转
				token: localStorage.getItem("token"),//token
			}
		},
		methods: {
			// 登录方法
			login() {
				this.$axios.post(
						"http://dida100.com:8888/api/login",//请求的地址
						this.user,//请求数据 //此处对象名必须与上侧侧 data中自定义双向绑定数据一致吗???
					)
					// 成功回调函数
					.then(res => {
						// 网络请求成功
						if (res.data.code === 200) {
							alert("登录成功")
							// 将请求到的数据转为JSON字符串存储起来
							localStorage.setItem("userInfo", JSON.stringify(res.data.user));
							localStorage.setItem("token", res.data.token);
							// 更新数据
							this.userInfo = res.data.user;
							this.token = res.data.token;
							console.log(res.data)
						} else {
							alert("登录失败")
						}
					})
					.catch(err => {
						console.error(err)
					})
			},
			// 退出登录
			loginout(){
				// 清空用户信息与token
				this.userInfo={};
				this.token=null;
				localStorage.removeItem("userInfo")
				localStorage.removeItem("token")
				alert("退出成功")
			}
		}
	}
</script>

五、axios便捷方法

  1.  post(url , data , config)
  2.  get(url , config)  
  3.  .delete(url,config)   删除
  4.  .put(url,data,config)    修改

六、axios基础方法 

axios({
url,//请求的地址
method,//请求方法 get,post,put,dalete
data,post请求的数据
params,//get请求的数据
headers,//请求头配置
})  

实例:

          sendMsg() {
				// 基础方法
				this.$axios({
						url: "/api/feed",
						method: "post",
						data: {
							msg: this.msg
						}
					})
					.then(res => {
						// alert(res.data.msg);
						if (res.data.code == 0) {
							// 让页面回归第一1
							this.current = 1;
							// 获取评论列表
							this.getFeed();
							// 清空评论框
							this.msg = '';
						}
					})
			},

 七、axios执行结果

网络请求成功
.then(res=>{
res.data  请求返回的数据
}

请求失败
.catch(err=>{
err.response.data  返回失败数据
}  

八、config axios配置 

配置请求头信息 

 "Authorization": 'Bearer ' + localStorage.getItem('token') 

实例:

// 给每个请求拦截一下,添加请求Token信息
axios.interceptors.request.use(function(config){
	config.headers.Authorization = 'Bearer '+localStorage.getItem("token");
	return config;
})

 九、restFul

1.接口的设计风格
2.强调每个url地址都是一个资源
3.可以通过get,post,put,delete操作资源
4.get获取,post新增,put修改,delete删除

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值