VUE常用的四种请求方式(get,post,put,delete)

本文详细介绍了axios的四种请求方式:get、post、put和delete。get请求常用于查询,参数可通过路径或拼接方式传递;post请求主要用于数据新增,参数可为对象或单值;put请求用于更新操作,参数通常为对象;delete请求用于删除,参数通常是单值。同时,文章对比了get和post请求在参数传递上的区别。

1、axios常用的四种请求方式说明

1.1 axios的get请求

get请求的方式,通常用作查询类的请求。
1.1.1 axios的get请求的链式加载

示例: axios.get(“url”,data)
.then(function(1))
.then(function(2))
.then(function(3))
链式加载解决了前端js的回调地狱问题,我们在发起ajax的请求的时候不需要再嵌套。
回调地狱问题简单说明:回调地狱问题是由于回调函数的嵌套引起的,当第一个ajax请求中的回调函数开始执行后,回调函数中继续嵌套ajax请求,这样嵌套会导致,第一次ajax的请求还没结束便开始了嵌套中的请求,最后返回的data数据是多层的,我们解析起来特别麻烦.

1.1.2 axios的get请求参数的传递
1.1.2.1 axios的get请求参数的传递–第一种restFul风格传递
 示例:
		/**
			 *  GET请求-简单参数的写法
			 * 需求: 根据ID查询数据
			 * URL: http://localhost:8090/axios/getUserById?id=100
			 * then(): 回调函数通过then返回 结构
			 */
		(1)	axios.get("http://localhost:8090/axios/getUserById/getUserById?id=100")
					 .then(function(result){
						 console.log(result.data)
					 })
					 
		(2)	axios.get('http://localhost:8090/axios/getUserById/{id}')
					 .then(function(result){
						 console.log(result.data)
					 })
	
get请求的参数我们首先可以将参数放到路径中,发起请求后,匹配后端的controller方法。(2) 示例的参数是写死的,可以测试的时候使用,这种不是restFul的风格
关于controller方法参数的说明:
	如果我们通过restFul传递的是单值参数,那么我们要加@PathVariable注解,通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过@PathVariable(“xxx“) 绑定到操作方法的入参中。如果controller方法参数的名字跟前端传来的参数名字一致 则可以省略括号中的名字绑定 ,如@PathVariable Integer id 。
	示例:
 @DeleteMapping( "/deleteById/{id}")
    public void deleteById(@PathVariable Integer id){
        userService.deleteByID(id);
    }
1.1.2.2 axios的get请求参数的传递–第二种 简单拼接的方式传参
axios.get("http://localhost:8090/axios/getUserById?id="+id)
					 .then(function(result){
						 console.log(result.data)
					 })

这种传参的方式也是动态的,注意axios的回调函数的返回值result是promise对象,我们需要对pomise对象进行解析获取对象再获取对象中的属性.如:result.data.id.

1.1.2.3 axios的get请求参数的传递–第三种 以对象的方式传递
//封装对象
				let user = {
					name: "mysql",
					age: 18,
					sex: "女"
				}
			
				axios.get(
					"http://localhost:8090/axios/user/getUserObj",{params: user})
					.then(function(result){
						console.log(result.data)
					})
	axios.get("http://localhost:8090/axios/user/getUserObj",
				{
					//key: value  key固定写法 params 参数对象
					params: {
						//再写用户的参数
						name: "mysql",
						age: 18,
						sex: "女"
					}
				}).then(function(result){
					console.log(result.data)
				}) 

我们在传递对象参数时,params 是固定写法,我们可以先定义变量将对象封装,{params: user} 也可以直接将user对象的属性以key-value的形式直接写到参数中.

1.2 axios的post请求

1.什么时候使用post请求
答:一般采用form表单提交时,采用post请求类型
主要用于数据的新增操作

					2.get请求/post请求主要的区别
						get: 参数动态的拼接到URL地址中 ?id=xx&name=xxx 数据是可见的
						post: 一般采用post请求数据是涉密的
1.2.1 axios的post请求传参方式
1.2.1.1 axios的post请求参数的传递–对象的方式
/**
					 * post业务:
					 * 		实现用户的新增 传递User对象
					 * 
					 * URL地址:
					 * 		http://localhost:8090/axios/insertUser
					 * 总结: 如果需要对象传参  
					 * 				1.get请求采用 axios.get(url,{params: 对象})
					 * 				2.post请求 axios.post(url,对象)
					 */
					let user = {
						name: "post请求的语法",
						age: 20,
						sex: '女'
					}
					let url1 = "http://localhost:8090/axios/insertUser"
					axios.post(url1, user)
							 .then(function(result){
								 console.log(result.data)
							 })

注意:如果是对象的方式传参,后端controller的参数也必须为对象,并且要加注解@RequestBody
示例:

 @PutMapping("/updateUser")
    public void updateUser(@RequestBody User user){
        System.out.println(user);
        userService.updateUser(user);
    }
1.2.1.2 axios的post请求参数的传递–单值参数
 axios的post请求单值的参数,我们可以通过restFul风格如:
async deById(id){
		await axios.post("/vue/deleteById/"+id)
			this.getUserList()
	}
1.2.1.2 axios的post请求参数的传递–restFul风格
/**
 * post请求 restFul的写法
* 实现用户新增入库
* url: http://localhost:8090/axios/user/name/age/sex
*/
	let url2 = "http://localhost:8090/axios/user/redis/18/男"
	axios.post(url2)
		.then(function(result){
			console.log(result.data)
	 })
					
					
	//对比Axios中的post请求
	let url3 = "http://localhost:8090/axios/jQuery"
	$.post(url3,user,function(data){
		console.log(data)
	})

1.3 axios的put请求

axios的put请求方式,一般用于更新操作.
参数为对象示例:
async updateUser(){
		await axios.put("/vue/updateUser",this.user)
	}

1.4 axios的delete请求

传递的参数为单值示例:
	async deleteById(id){
			await axios.delete("/vue/deleteById/"+id)
			this.getUserList()
	}
 @DeleteMapping( "/deleteById/{id}")
    public void deleteById(@PathVariable Integer id){
        userService.deleteByID(id);
    }

1.5 axios中的get请求和post请求参数传递的区别

  1. get: 参数动态的拼接到URL地址中 ?id=xx&name=xxx 数据是可见的
    post: 一般采用post请求数据是涉密的
  2. 1.get请求采用 axios.get(url,{params: 对象})
    2.post请求 axios.post(url,对象)
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

诗人在流浪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值