发表日期: 2021-05-07 09:59:04 浏览次数:119
尉氏小程序制作【尉氏企业邮箱】尉氏网站外包、尉氏微信商城开发、尉氏网店美工、尉氏淘宝设计
尉氏县位于豫东平原,属河南省开封市。东邻通许县、扶沟县,南与鄢陵县、长葛县接壤,西与新郑市交界,北与祥符区、中牟县相连。南北长40.77公里,东西宽43.76公里,总面积约1307.7平方公里,总人口81万人(2000年),中共尉氏县委、尉氏县人民政府驻地:两湖街道。 [1]
尉氏古称“尉州”,是河南省经济管理扩权县,电价趸售优惠县,拥有省政府批准的全省八大特色基地之一的河南省中原纺织工业基地,省认定的尉氏高效农业示范园区。 [2]
2018年,全县完成地区生产总值388亿元,增长8%;一般公共预算收入首次突破20亿元、达到20.6亿元,增长16.8%;税收收入15.96亿元,增长29.9%;城镇和农村居民人均可支配收入预计达到26951元、13911元,分别增长8.3%和8.9%。 [3]
1.1 为什么选择axios?
axios 是一个基于 promise 的 HTTP库网络请求插件.
基本特点
可以用在浏览器==(测试网站:httpbin.org/)==和 node.js中
支持 Promise API。
自动转换 JSON 数据。
客户端支持防御 XSRF。
创建项目:vue init webpack axiostest,终端安装插件:cnpm install axios --save
1.2 axios基本使用
App.vue
<template>
<div id="app">
</div>
</template>
<script>
export default {
name: 'App'
}
</script>
<style>
</style>
main.js
import Vue from 'vue'
import App from './App'
// 导入axios
import axios from 'axios'
Vue.config.productionTip = false
/* eslint-disable no-new */
new Vue({
el: '#app',
render: h => h(App)
})
// 1.基本使用
axios({
url: 'http://123.207.32.32:8000/home/multidata',
method: 'get'
}).then(res => {
console.log(res)
})
axios({
url: 'http://123.207.32.32:8000/home/data',
// 专门用来对get请求参数的拼接
params: {
type: 'pop',
page: 1
}
}).then(res => {
console.log(res);
})
执行结果
1.3 axios发送并发请求
使用axios.all可以放入多个请求的数组,axios.all([ ]) 返回的结果是一个数组。
main.js
import Vue from 'vue'
import App from './App'
// 导入axios
import axios from 'axios'
Vue.config.productionTip = false
/* eslint-disable no-new */
new Vue({
el: '#app',
render: h => h(App)
})
// 1.axios发送并发请求
axios.all([axios({
url: 'http://123.207.32.32:8000/home/multidata'
}), axios({
url: 'http://123.207.32.32:8000/home/data',
params: {
type: 'sell',
page: 5
}
})]).then(results => {
console.log(results);
})
执行结果
使用 axios.spread 可将数组 [res1,res2] 展开为 res1, res2。
main.js
import Vue from 'vue'
import App from './App'
// 导入axios
import axios from 'axios'
Vue.config.productionTip = false
/* eslint-disable no-new */
new Vue({
el: '#app',
render: h => h(App)
})
// 2.axios发送并发请求
axios.all([axios({
url: 'http://123.207.32.32:8000/home/multidata'
}), axios({
url: 'http://123.207.32.32:8000/home/data',
params: {
type: 'sell',
page: 5
}
})]).then(axios.spread((res1, res2) =>{
console.log(res1);
console.log(res2);
}))
执行结果
1.4 axios的实例
为什么要创建axios的实例呢?
当从axios模块中导入对象时, 使用的实例是默认的实例。
当给该实例设置一些默认配置时, 这些配置就被固定下来了。
但是后续开发中, 某些配置可能会不太一样,比如某些请求需要使用特定的baseURL或者timeout或者content-Type等。
这个时候, 就可以创建新的实例, 并且传入属于该实例的配置信息。
import Vue from 'vue'
import App from './App'
// 导入axios
import axios from 'axios'
Vue.config.productionTip = false
/* eslint-disable no-new */
new Vue({
el: '#app',
render: h => h(App)
})
// 4.创建对应的axios实例
const instance1 = axios.create({
baseURL: 'http://123.207.32.32:8000',
timeout: 5000
})
instance1({
url: '/home/multidata'
}).then(res => {
console.log(res);
})
instance1({
url: '/home/data',
params:{
type: 'pop',
page: 1
}
}).then(res => {
console.log(res);
})
const instance2 = axios.create({
baseURL: 'http://222.111.33.33:8000',
timeout: 10000,
headers: {}
})
1.5 axios封装
方式一(回调函数)
request.js
// 导入axios
import axios from 'axios'
export function request(config, success, failure){
// 1.创建axios的实例
const instance = axios.create({
baseURL: 'http://123.207.32.32:8000',
timeout: 5000
})
// 发送真正的网络请求
instance(config)
.then(res =>{
success(res)
})
.catch(err =>{
failure(err)
})
}
main.js
import Vue from 'vue'
import App from './App'
Vue.config.productionTip = false
/* eslint-disable no-new */
new Vue({
el: '#app',
render: h => h(App)
})
//1.封装request模块
import {request} from "./network/request";
request({
url: '/home/multidata'
}, res =>{
console.log(res);
}, err =>{
console.log(err);
})
执行结果
方式二(Promise函数)
request.js
// 导入axios
import axios from 'axios'
export function request(config) {
return new Promise((resolve, reject) => {
// 1.创建axios的实例
const instance = axios.create({
baseURL: 'http://123.207.32.32:8000',
timeout: 5000
})
// 发送真正的网络请求
instance(config)
.then(res => {
resolve(res)
})
.catch(err => {
reject(err)
})
})
}
main.js
import Vue from 'vue'
import App from './App'
Vue.config.productionTip = false
/* eslint-disable no-new */
new Vue({
el: '#app',
render: h => h(App)
})
// 5.封装request模块
import {request} from "./network/request";
request({
url: '/home/multidata'
}).then(res => {
console.log(res);
}).catch(err => {
console.log(err);
})
最终方案
request.js
// 导入axios
import axios from 'axios'
export function request(config) {
// 1.创建axios的实例
const instance = axios.create({
baseURL: 'http://123.207.32.32:8000',
timeout: 5000
})
// 2.发送真正的网络请求
return instance(config)
}
1.6 如何使用拦截器?
axios提供了拦截器,用于我们在发送每次请求或者得到相应后,进行对应的处理。
响应的成功拦截中,主要是对数据进行过滤。
代码示例
request.js
// 导入axios
import axios from 'axios'
export function request(config) {
// 1.创建axios的实例
const instance = axios.create({
baseURL: 'http://123.207.32.32:8000',
timeout: 5000
})
// 2.axios拦截器(请求拦截)
instance.interceptors.request.use(config => {
/*
1.比如config中的一些信息不符合服务器的要求
2.比如每次发送网络请求时, 都希望在界面中显示一个请求的图标
3.某些网络请求(比如登录(token)), 必须携带一些特殊的信息
*/
return config
}, err => {
console.log(err);
})
// 2.1 响应拦截
instance.interceptors.response.use(res => {
return res.data
}, err => {
console.log(err);
})
// 3.发送真正的网络请求
return instance(config)
}
main.js
import Vue from 'vue'
import App from './App'
Vue.config.productionTip = false
/* eslint-disable no-new */
new Vue({
el: '#app',
render: h => h(App)
})
// 封装request模块
import {request} from "./network/request";
request({
url: '/home/multidata'
}).then(res => {
console.log(res);
}).catch(err => {
console.log(err);
})
执行结果
备案号: 苏ICP备11067224号
CopyRight © 2011 书生商友信息科技 All Right Reserved
24小时服务热线:400-111-6878 E-MAIL:1120768800@qq.com QQ:1120768800
网址: https://www.768800.com 网站建设:上往建站
关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|
企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|
400电话办理| 书生商友软件| 葬花网| 调温纤维| 海洋馆运营维护| 北京保安公司| 殡仪馆服务| 殡葬服务| 昌平殡葬| 朝阳殡葬|
欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系
服务热线:400-111-6878