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

目录
  • 一、使用Vue.http/this.$http
    • 1.GET请求
    • 2.POST请求
  • 二、使用Vue.resource/this.$resource
    • GET请求
    • POST请求
    • inteceptor–在请求前和请求后附加行为
  • 实例–为所有的请求处理加一个loading
    • 拓展
  • 参考文章

一、使用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 – 在请求前和请求后附加行为

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

用法

//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请求内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • vue axios数据请求get、post方法及实例详解

    我们常用的有get方法以及post方法,下面简单的介绍一下这两种请求方法 vue中使用axios方法我们先安装axios这个方法 npm install --save axios 安装之后采用按需引入的方法,哪个页面需要请求数据就在哪个页面里引入一下. import axios from 'axios' 引入之后我们就可以进行数据请求了,在methods中创建一个方法 methods:{ getInfo(){ let url = "url" axios.get(url).then((r

  • vue中axios处理http发送请求的示例(Post和get)

    本文介绍了vue中axios处理http发送请求的示例(Post和get),分享给大家,具体如下: axios中文文档 https://github.com/mzabriskie/axios#using-applicationx-www-form-urlencoded-format   axios文档 在处理http请求方面,已经不推荐使用vue-resource了,而是使用最新的axios,下面做一个简单的介绍. 安装 使用node npm install axios 使用cdn <scrip

  • Vue axios全局拦截 get请求、post请求、配置请求的实例代码

    下面通过一段代码给大家介绍Vue axios全局拦截 get请求.post请求.配置请求,具体代码如下所述: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="../node_modules/vue/dist/vue.js"&g

  • 解决vue $http的get和post请求跨域问题

    vue $http的get和post请求跨域问题 首先在config/index.js中配置proxyTable proxyTable: { '/api':{ // target:'http://jsonplaceholder.typicode.com', target:'http://localhost:9080', changeOrigin:true, pathRewrite:{ '/api':'' } } 用户名和密码登录的表单提交 methods: { // get请求 // submi

  • vue中get和post请求的区别点总结

    本教程操作环境:windows7系统.vue2.9.6版,DELL G3电脑. vue中get和post请求的区别 1.get请求 在GET请求中参数是跟在URL后面,即参数放在header中.能传的参数较小.使用params. this.$http.get(' URL ').then(result=>{ if(result.status===0){ // 成功了 this.list=result.message; // 这里是假设被请求的数据表中的列表名称为message }else{ //

  • Vue resource中的GET与POST请求的实例代码

    前言:vue-resource 使用比 jQuery 更加简洁的方式实现了异步请求功能,还提供了比如 interceptors 这样处理请求过程中行为的功能.下面介绍下vue-resource中常用的GET与POST请求使用与封装方法. 访问 Github获取最新的开发文件与文档 特征: 支持 Promise API 和 URI Templates 支持请求过程中使用拦截器(interceptoers) 支持 Firefox,Chrome,Safari,Opera 和 IE9+ 非常的小(压缩后

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

    目录 一.使用Vue.http/this.$http 1.GET请求 2.POST请求 二.使用Vue.resource/this.$resource GET请求 POST请求 inteceptor–在请求前和请求后附加行为 实例–为所有的请求处理加一个loading 拓展 参考文章 一.使用Vue.http/this.$http 在发起请求的时候,为了减少作用域链的搜索,建议使用一个局部变量来接受this 1. GET请求 // 基于全局Vue对象使用http Vue.http.get('/s

  • vue cli构建的项目中请求代理与项目打包问题

    在上篇文章给大家介绍了vue-cli webpack模板项目搭建及打包时路径问题的解决方法,可以点击查看. vue-cli构建的项目中,生产模式下的打包路径.与生产模式下的请求代理简单示意 总结 以上所述是小编给大家介绍的vue cli构建的项目中请求代理与项目打包问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的.在此也非常感谢大家对我们网站的支持! 您可能感兴趣的文章: Vue-cli创建项目从单页面到多页面的方法 Vue使用vue-cli创建项目 vue-cli项

  • vue 动态改变静态图片以及请求网络图片的实现方法

    在本身的项目中需要动态请求后端图片 一般需要在created中写因为beforeCreate的时候图片过不来的,如果想在这时候请求数据那么图片的地址我们就要存在一个地方.可以是本地也可以是vuex中 静态图片想要动态的添加或者改变我们需要改变图片的目录结构 把图片放在static中然后 imgUrl : ['/static/clinical.png','/static/nursing.png','/static/function.png','/static/test.png','/static/

  • vue axios请求拦截实例代码

    axios 简介 axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端,它本身具有以下特征: 从浏览器中创建 XMLHttpRequest 从 node.js 发出 http 请求 支持 Promise API 拦截请求和响应 转换请求和响应数据 取消请求 自动转换JSON数据 客户端支持防止 CSRF/XSRF 下面代码给大家介绍vue axios 请求拦截,具体代码如下所示: import axios from 'axios';//引入axios依赖 imp

  • vue发送websocket请求和http post请求的实例代码

    先给大家介绍下vue发送websocket请求和http post请求 直接上代码: pdf.vue <script> import SockJS from 'sockjs-client'; import Stomp from 'stompjs'; import qs from "qs" export default { name: "pdf", data() { return { newsData: [], tagGuid_mx: "&quo

  • vue中在vuex的actions中请求数据实例

    我废话不多说了,直接上代码吧! actions.js getCertificationStatus(context, {vm:vm,type:type}){ return new Promise((resolve, reject) => { axios.post('/realNameUtils/gotoStatusPage') .then((res)=>{ context.commit('certificationStatus',res.data.content) if(type=='1'){

  • Vue使用轮询定时发送请求代码

    一.什么是轮询? 轮询(Polling)是一种CPU决策如何提供周边设备服务的方式,又称"程控输出入"(Programmed I/O).轮询法的概念是,由CPU定时发出询问,依序询问每一个周边设备是否需要其服务,有即给予服务,服务结束后再问下一个周边,接着不断周而复始. 在WEB上来说就是客户端一直向服务端发起请求,服务端返回数据,不论返回什么都会再次向服务端发送请求. 二.采用定时器进行轮询 <template> <div></div> </

  • vue接口请求加密实例

    1. 安装vue项目 npm init webpack project 2 安装iview npm i iview --save (这里是结合iview框架使用的 可根据自己的需求安装 当然也可以不安装) 3 在src目录下建一个utils文件夹 里面需要放5个js 都是封装好的js文件 功能不仅仅局限于加密 可以研究一下 你会学到很多东西 1.api.js /** * 为vue实例添加http方法 * Vue.use(http) */ import http from './http' exp

随机推荐