Skip to content

23.Axios 网络请求

23.1 安装

npm install axios

23.2 在组件中引入axios

js
import axios from  'axios'
  • 在create函数中使用
js
axios.get('stu.json')
	.then((res)=>{
	this.tableData = res.data
})
.catch(function (error) {
	console.log(error);
});
  • 完整的使用代码
html
<template>
	<div>
		<el-table :data="tableData" style="width: 100%" size="mini">
			 <el-table-column
			        prop="name"
			        label="直接显示名字"
			        width="180">
			</el-table-column>
			
			<el-table-column label="日期" width="180">

				<template slot-scope="scope">
					<i class="el-icon-time"></i>
					<span style="margin-left: 10px">{{ scope.row.date }}</span>
				</template>
				
			</el-table-column>
			
			
			
			<el-table-column label="姓名" width="180">
				<template slot-scope="scope">
					<el-popover trigger="hover" placement="top">
						<p>姓名: {{ scope.row.name }}</p>
						<p>住址: {{ scope.row.address }}</p>
						<div slot="reference" class="name-wrapper">
							<el-tag size="medium">{{ scope.row.name }}</el-tag>
						</div>
					</el-popover>
				</template>
			</el-table-column>
			
			<el-table-column label="操作">
				<template slot-scope="scope">
					<el-button size="mini" @click="handleEdit(scope.$index, scope.row)">编辑</el-button>
					<el-button size="mini" type="danger" @click="handleDelete(scope.$index, scope.row)">删除</el-button>
				</template>
			</el-table-column>
		</el-table>




	</div>
</template>

<script>
	import axios from  'axios'
	export default {
		name: 'Table',
		components: {

		},
		data() {
			return {
				tableData: []
			}
		},
		methods: {

		},
		created() {

			axios.get('stu.json')
			 .then((res)=>{
				 this.tableData = res.data
			 })
			  .catch(function (error) {
			    console.log(error);
			  });
			
			
			
		}
	}
</script>

<style>
</style>

23.3 全局配置

配置通用路径

js
axios.defaults.baseURL = 'http://127.0.0.1:8090/web';

23.2 练习

vuejs+Javaweb练习完成CURD

sql
CREATE TABLE `disease` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `disease_code` varchar(100) NOT NULL COMMENT '疾病助记编码',
  `disease_name` varchar(100) DEFAULT NULL COMMENT '疾病名称',
  `disease_icd` varchar(100) NOT NULL COMMENT '国际ICD编码',
  `cate_id` int(11) DEFAULT NULL COMMENT '主键',
  `createtime` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `valid` varchar(5) DEFAULT '1' COMMENT '是否有效,默认1 有效,0无效',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=48 DEFAULT CHARSET=utf8 COMMENT='疾病信息';

/*Data for the table `disease` */

insert  into `disease`(`id`,`disease_code`,`disease_name`,`disease_icd`,`cate_id`,`createtime`,`valid`) values (2,'GDXHL0','古典型霍乱0','A00.0510',1,'2020-12-16 08:41:28','1'),(3,'GDXHL1','古典型霍乱1','A00.0511',1,'2020-12-16 08:41:28','1'),(4,'GDXHL2','古典型霍乱2','A00.0512',1,'2020-12-16 08:41:28','1'),(5,'GDXHL3','古典型霍乱3','A00.0513',1,'2020-12-16 08:41:28','1'),(6,'GDXHL4','古典型霍乱4','A00.0514',1,'2020-12-16 08:41:28','1'),(7,'GDXHL5','古典型霍乱5','A00.0515',1,'2020-12-16 08:41:28','1'),(8,'GDXHL6','古典型霍乱6','A00.0516',1,'2020-12-16 08:41:28','1'),(9,'GDXHL7','古典型霍乱7','A00.0517',1,'2020-12-16 08:41:28','1'),(10,'GDXHL8','古典型霍乱8','A00.0518',1,'2020-12-16 08:41:28','1'),(14,'GDXHL2','古典型霍乱2','A00.0512',1,'2020-12-16 09:06:13','1'),(15,'GDXHL3','古典型霍乱3','A00.0513',1,'2020-12-16 09:06:13','1'),(23,'GDXHL1','xx疾病','A510.11',1,'2020-12-16 13:41:58','1'),(24,'GDXHL0_q','荨麻疹霍乱0','A00.0510',1,'2021-12-17 14:02:24','1'),(25,'GDXHL1_q','荨麻疹霍乱1','A00.0511',1,'2021-12-17 14:02:24','1'),(26,'GDXHL2_q','荨麻疹霍乱2','A00.0512',1,'2021-12-17 14:02:24','1'),(27,'GDXHL3_q','荨麻疹霍乱3','A00.0513',1,'2021-12-17 14:02:24','1'),(28,'GDXHL4_q','荨麻疹霍乱4','A00.0514',1,'2021-12-17 14:02:24','1'),(29,'GDXHL5_q','荨麻疹霍乱5','A00.0515',1,'2021-12-17 14:02:24','1'),(30,'GDXHL6_q','荨麻疹霍乱6','A00.0516',1,'2021-12-17 14:02:24','1'),(31,'GDXHL7_q','荨麻疹霍乱7','A00.0517',1,'2021-12-17 14:02:24','1'),(32,'GDXHL0_q','退行性脊髓灰质炎0','A00.0510',1,'2021-12-17 14:03:09','1'),(33,'GDXHL1_q','退行性脊髓灰质炎1','A00.0511',1,'2021-12-17 14:03:09','1'),(34,'GDXHL2_q','退行性脊髓灰质炎2','A00.0512',1,'2021-12-17 14:03:09','1'),(35,'GDXHL3_q','退行性脊髓灰质炎3','A00.0513',1,'2021-12-17 14:03:09','1'),(36,'GDXHL4_q','退行性脊髓灰质炎4','A00.0514',1,'2021-12-17 14:03:09','1'),(37,'GDXHL5_q','退行性脊髓灰质炎5','A00.0515',1,'2021-12-17 14:03:09','1'),(38,'GDXHL6_q','退行性脊髓灰质炎6','A00.0516',1,'2021-12-17 14:03:09','1'),(39,'GDXHL7_q','退行性脊髓灰质炎7','A00.0517',1,'2021-12-17 14:03:09','1'),(40,'GDXHL0_q','白细胞异常0','A00.0510',1,'2021-12-17 14:04:10','1'),(41,'GDXHL1_q','白细胞异常1','A00.0511',1,'2021-12-17 14:04:10','1'),(42,'GDXHL2_q','白细胞异常2','A00.0512',1,'2021-12-17 14:04:10','1'),(43,'GDXHL3_q','白细胞异常3','A00.0513',1,'2021-12-17 14:04:10','1'),(44,'GDXHL4_q','白细胞异常4','A00.0514',1,'2021-12-17 14:04:10','1'),(45,'GDXHL5_q','白细胞异常5','A00.0515',1,'2021-12-17 14:04:10','1'),(46,'GDXHL6_q','白细胞异常6','A00.0516',1,'2021-12-17 14:04:10','1'),(47,'GDXHL7_q','白细胞异常7','A00.0517',1,'2021-12-17 14:04:10','1');

后端

涉及到MVC

  • Controller

  • Service
    • 事务的业务逻辑
  • Dao
    • JDBC的封装
  • 实体类

前端:

  • index.vue 列表页组件

  • edut.vue 编辑页面组件

  • 配置路由

  • 带条件查询

  • 分页组件

  • axios网络请求的时候使用loading组件

给axios添加遮罩层

js
import axios from 'axios'
import { Loading } from 'element-ui';

let loadingInstance  = null;
// 添加请求拦截器
axios.interceptors.request.use( (config)=>{
    // 在发送请求之前做些什么
	
	loadingInstance = Loading.service({ fullscreen: true,background:'rgba(0,0,0,0.7)', text: '加载中请稍等', });
	// console.log("计划打开loading....")
	return config;
// 对请求错误做些什么
	return Promise.reject(error);
});


// 添加响应拦截器
axios.interceptors.response.use( (response)=> {
 
	loadingInstance.close()
	// console.log("关闭loading....")
    return response;
  }, function (error) {
    // 超出 2xx 范围的状态码都会触发该函数。
    // 对响应错误做点什么
    return Promise.reject(error);
  });




const http = {
	get(url, callback, params = {}) {

		axios.get(url, {
			params: params
		}).then((response) => {

			callback(response.data)
		}).catch(function(error) {
			// 处理错误情况
			console.log(error);
		});
	},
	
	post(url, callback, params = {}){
		
		const urlParams = new URLSearchParams();
		console.log(params);
		for(let key in params){
			console.log("key",key)
			urlParams.append(key, params[key]);
		}
		console.log(urlParams)
		
		axios.post(url, urlParams)
		.then((ret)=> {
			
			let data = ret.data;
			callback(data)
		})
		.catch(function(error) {
			console.log(error);
		});
		
	}
}

export default http

Released under the MIT License.