vue数据请求
- 请求方案一:axios 第三方模块,可以安装或引入cdn或下载使用。不符合模块化开发思想。返回值经过了封装,安全性较高。
写法方式:axios.get() //get请求
axios.post() //post请求
axios(options) //get,post请求都行。
axios.default.baseURL=‘http://localhost:3000’;//baseURL指定的就是后端请求接口地址
- 模拟数据请求
注意点:进行模拟数据时要和后端定义的字段必须统一。
getMOckData(){
axios({
url:`${baseURL}/user` , //接口路径
methods:'get' //默认是get,可以修改
}).then(res=> console.log(res))
.catch(err=> console.log(err))
}
- 后端接口(1). get()方式请求 :axios.get(url,options)
```jsaxios({
url:${baseURL}/user,
params:{
//传给后端的数据
},
}).then(res=> console.log(res))
.catch(err=>console.log(err))
```
(2). post() 方式请求:传递数据格式为 application/json
axios({
url:`${baseURL}/user`,
method:'post',
data:{
//传给后端的数据
}
}).then(res=> console.log(res))
.catch(err=>console.log(err))
(3) . post() 方式请求:传递数据格式为 表单 application/x-www-form-urlencoded
const p=new URLSearchParams() //得到 数据参数携带 对象p
p.append('username',username) //传递给后端的数据
p.append('password',password) //数据
axios({
url:`${baseURL}/`,
method:'post',
data:p //发送给后端的数据
}).then(res=>console.log(res))
.catch(err=>console.log(err))
(4). put()方式请求:底层原理是get请求
axios({
url:`${baseURL}/`,
method:'put',
params:{
//发送给后端的数据
}
}).then(res=> console.log(res))
.catch(err=> console.log(err))
(5) . delete() 方式请求:底层原理是get请求
axios({
url:`${baseURL}/`,
method:'delete',
params:{
//发送给后端的数据
}
}).then(res=> console.log(res))
.catch(err=> console.log(err))
总结:页面传递数据给后端的方式不同,get,put,delete用 params:{ 数据 }。 post发送json数据用data:{ 数据 }。post发送表单数据需要定义数据参数携带对象p,data:p。
- 请求方案二:fetch
- 特点:原生js提供,可以用ajax封装,使用简易。 符合模块化开发思想。返回值没有经过封装,安全性较低。
- 模拟数据请求
fetch(`${baseURL}/user`)
.then(data=>data.json()) //数据格式化 json() ,text() ,blob()二进制
.then(res=>console.log(res)) //返回的数据
.catch(err=>console.log(err))
- get()请求,发送的数据放在url中拼接
fetch(`${dataURL}/serch?name=zhangsan&password=123456`,{
method:'get'
}).then(data=>data.json()) //数据格式化 json() ,text() ,blob()二进制
.then(res=>console.log(res)) //返回的数据
.catch(err=>console.log(err))
- post请求,发送数据为表单格式
fetch(`${baseURL}/user`,{
method:'post',
header:new Headers({
'Content-Type': 'application/x-www-form-urlencoded' // 指定提交方式为表单提交
}),
body:new URLSearchParams([['username','张三'],['password',123456]]).toString() //发送给后端的数据
}).then(data=>data.json()) //数据格式化 json() ,text() ,blob()二进制
.then(res=>console.log(res)) //返回的数据
.catch(err=>console.log(err))
- post请求,发送数据为json格式
fetch(`${baseURL}/user`,{
method:'post', //or 'put'/delete请求会请求2次
headers:new Headers({
'Content-Type': 'application/json' //指定json数据格式提交
}),
body:JSON.stringify({
username:'张三',
password:123456 //发送给后端的数据
})
}).then(data=>data.json()) //数据格式化 json() ,text() ,blob()二进制
.then(res=>console.log(res)) //返回的数据
.catch(err=>console.log(err))
总结:get请求发送的数据拼接到url中。post请求要通过设置请求头来指定提交方式,表单提交要new URLSearchParams([],[]).toString() 发送数据到后端 , json格式提交用 JSON.stringify({}) 发送数据, 转为字符串。