vue处理get/post的http请求的实例

 更新时间:2022年03月01日 09:17:20   作者:weixin_46353030  
本文主要介绍了vue处理get/post的http请求的实例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

一、使用Vue.http/this.$http

在发起请求的时候,为了减少作用域链的搜索,建议使用一个局部变量来接受this

1. GET请求

// 基于全局Vue对象使用http
Vue.http.get('/someUrl', [options]).then(successCallback, errorCallback);

// 在一个Vue实例内使用$http
this.$http.get('/someUrl', [options]).then(successCallback, errorCallback);

示例

//不带参数的get请求
this.$http.get('/someUrl').then(function(res){
    console.log('请求成功处理');   
},function(res){
    console.log('请求失败处理');
});

//需要传递数据的get请求
this.$http.get('/someUrl',{param:jsonData}).then(function(res){
    console.log('请求成功处理');   
},function(res){
    console.log('请求失败处理');
});

//ES6的Lambda写法
this.$http.get('/someUrl', [options]).then((response) => {
	console.log('请求成功处理');
}, (response) => {
	console.log('请求失败处理');
});

2.POST请求

post 发送数据到后端,需要第三个参数 {emulateJSON:true}

emulateJSON 的作用: 如果Web服务器无法处理编码为 application/json 的请求,你可以启用 emulateJSON 选项。启用该选项后,请求会以application/x-www-form-urlencoded作为MIME type,就像普通的HTML表单一样。

// 基于全局Vue对象使用http
Vue.http.post('/someUrl', [body], [options]).then(successCallback, errorCallback);

// 在一个Vue实例内使用$http
this.$http.post('/someUrl', [body], [options]).then(successCallback, errorCallback);

示例

this.$http.post('/try/ajax/demo_test_post.php',{name:"菜鸟教程",url:"http://www.runoob.com"},{emulateJSON:true}).then(function(res){
    	document.write(res.body);    
	},function(res){
     	console.log(res.status);
	});

二、使用Vue.resource/this.$resource

vue-resource提供了另外一种方式访问HTTP——resource服务,resource服务包含以下几种默认的action:

get: {method: 'GET'},
save: {method: 'POST'},
query: {method: 'GET'},
update: {method: 'PUT'},
remove: {method: 'DELETE'},
delete: {method: 'DELETE'}

访问resource对象的两种方式

//全局访问
Vue.resource
//实例访问
this.$resource

GET请求

//使用一个局部变量来接受this
var vm = this;
this.$resource('apiUrl').get().then((response) => {
	console.log("调用成功");
	})
	.catch(function(response) {
	console.log("调用失败");
	})
}

POST请求

使用save方法发送POST请求

//使用一个局部变量来接受this
var vm = this;
this.$resource('apiUrl').save('apiUrl',Target).then((response) => {
	console.log("调用成功");
	})
	.catch(function(response) {
	console.log("调用失败");
	})
}

inteceptor – 在请求前和请求后附加行为

拦截器可以在请求发送前和发送请求后做一些处理

来自keepfool文章

用法

//Lambda函数写法
Vue.http.interceptors.push((request, next) => {
		// ...
		// 请求发送前的处理逻辑
		// ...
	next((response) => {
		// ...
		// 请求发送后的处理逻辑
		// ...
		// 根据请求的状态,response参数会返回给successCallback或errorCallback
		return response
	})
})
//普通写法
Vue.http.interceptors.push(function(request, next) {
	// ...
	// 请求发送前的处理逻辑
	// ...
	next(function(response) {
		// ...
		// 请求发送后的处理逻辑
		// ...
		// 根据请求的状态,response参数会返回给successCallback或errorCallback
		return response
	})
})

实例 – 为所有的请求处理加一个loading

请求发送前显示loading,接收响应后隐藏loading或显示指定的loading信息;

添加loading.vue组件

<template id="loading-template">
	<div class="loading-overlay">
		<div class="sk-three-bounce">
			<div class="sk-child sk-bounce1"></div>
			<div class="sk-child sk-bounce2"></div>
			<div class="sk-child sk-bounce3"></div>
		</div>
	</div>
</template>

在父组件中引入loading组件

<template>
	<div class="father">
		//loading 发起请求时显示
		<loading v-show="showLoading"</loading>
		//modal-dialog 请求失败时显示
		<modal-dialog :show="showDialog">
		<header class="dialog-header" slot="header">
			<h1 class="dialog-title">Server Error</h1>
		</header>
		<div class="dialog-body" slot="body">
			<p class="error">Oops,server has got some errors, error code: {{errorCode}}.</p>
		</div>
	</modal-dialog>
	</div>
</template>

在父组件中添加inteceptor

data: {
		showLoading: false,
		showDialog: false,
		errorCode: ''
},
//在生命周期中添加inteceptor
Vue.http.interceptors.push((request, next) => {
	help.showLoading = true
	next((response) => {
		if(!response.ok){
			help.errorCode = response.status
			help.showDialog = true
		}
		help.showLoading = false
		return response
	});
});

拓展

vue-resource 提供了 7 种请求 API(REST 风格):

get(url, [options])
head(url, [options])
delete(url, [options])
jsonp(url, [options])
post(url, [body], [options])
put(url, [body], [options])
patch(url, [body], [options])

除了 jsonp 以外,另外 6 种的 API 名称是标准的 HTTP 方法。其中,options参数说明如下:

菜鸟教程

可以通过如下属性和方法处理一个请求获取到的响应对象:

菜鸟教程

参考文章

菜鸟教程

完整代码示例及其他请求方法的使用

代码是参考上面两篇文章写出来的,没有实际运行过;且只记录了GET/POST两种请求方式,其它请求方式以及完整代码需要参考第二篇文章

到此这篇关于vue处理get/post的http请求的实例的文章就介绍到这了,更多相关vue get/post的http请求内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue2+electron项目搭建过程

    vue2+electron项目搭建过程

    文章介绍了如何使用Vue CLI 2搭建Vue项目,并添加Electron插件vue-cli-plugin-electron-builder来创建一个Vue+Electron项目,文章还提供了启动和打包项目的方法,并提示了下载国内网较慢的文件时可以先注释掉代码进行调试,感兴趣的朋友一起看看吧
    2025-01-01
  • vue-cli创建vue项目的详细步骤记录

    vue-cli创建vue项目的详细步骤记录

    vue.cli是vue中的项目构造工具,是一个npm包,需要安装node.js和 git才能用,下面这篇文章主要给大家介绍了关于利用vue-cli创建vue项目的详细步骤,需要的朋友可以参考下
    2022-06-06
  • VUE v-model表单数据双向绑定完整示例

    VUE v-model表单数据双向绑定完整示例

    这篇文章主要介绍了VUE v-model表单数据双向绑定,结合完整实例形式分析了vue.js实现表单数据双向绑定相关操作技巧,需要的朋友可以参考下
    2019-01-01
  • vue同一个浏览器登录不同账号数据覆盖问题解决方案

    vue同一个浏览器登录不同账号数据覆盖问题解决方案

    同一个浏览器登录不同账号session一致,这就导致后面登录的用户数据会把前面登录的用户数据覆盖掉,这个问题很常见,当前我这边解决的就是同一个浏览器不同窗口只能登录一个用户,对vue同一个浏览器登录不同账号数据覆盖问题解决方法感兴趣的朋友一起看看吧
    2024-01-01
  • vue+axios methods方法return取不到值问题及解决

    vue+axios methods方法return取不到值问题及解决

    这篇文章主要介绍了vue+axios methods方法return取不到值问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • Vue3通过hooks方式封装节流和防抖的代码详解

    Vue3通过hooks方式封装节流和防抖的代码详解

    vue3 中的 hooks 就是函数的一种写法,就是将文件的一些单独功能的js代码进行抽离出来,放到单独的js文件中,或者说是一些可以复用的公共方法/功能,本文给大家介绍了Vue3通过hooks方式封装节流和防抖,需要的朋友可以参考下
    2024-10-10
  • Vuex中this.$store.commit()和this.$store.dispatch()区别说明

    Vuex中this.$store.commit()和this.$store.dispatch()区别说明

    这篇文章主要介绍了Vuex中this.$store.commit()和this.$store.dispatch()区别说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • Vue常见报错以及解决方案实例总结

    Vue常见报错以及解决方案实例总结

    最近做了一个比较老的vue项目,启动居然各种报错,下面这篇文章主要给大家介绍了关于Vue常见报错以及解决方案的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • vue3+elementPlus项目支持设置默认附件方式

    vue3+elementPlus项目支持设置默认附件方式

    这篇文章主要介绍了vue3+elementPlus项目支持设置默认附件方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • 解决vue props 拿不到值的问题

    解决vue props 拿不到值的问题

    今天小编就为大家分享一篇解决vue props 拿不到值的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09

最新评论