当我们学习vue的时候,数据的请求也是很重要的
在处理数据请求的时候,我们会遇到一会跨域的问题,例如这样,就是我们遇到了跨域的问题
Access to XMLHttpRequest at 'https://vue3-fjord-81553.herokuapp.com/api/resources' from origin 'http://localhost:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
我们的解决方法是这样的
完整的数据请求步骤
1.先安装axios,
2.在src文件夹中创建一个文件夹actions,并创建一个文件index.js
3.在index.js中先引入我们安装的axios
4.在整个项目的根目录中创建一个文件,文件名是固定的叫vue.confijg.js
5.在vue.config.js中配置跨域的问题
module.exports = {
devServer:{
//设置跨域
proxy:{
"^/api":{
target:"https://vue3-fjord-81553.herokuapp.com",
changeOrigin:"true",
}
}
}
}
target的就是你的所有的一个路径的前缀。也就是你的请求域名
6.回到你的index.js中,你就可以去实现你的路由请求了
6.1请求的方式有两种一种是post,一种是get
其实只是方式的不同的不同
get:
export function fetchResources(){
return axios.get("/api/resources").then((res)=>res.data)
}
根据你的文档看是否需要传值,如果需要传值,则你需要在()中进行传值,并在地址之后添加,传给后台,如果不需要则()中可以为空
post:
export function createResource(item){
return axios
.post("/api/resources",item)
.then((res)=>res.data)
.catch((error) =>{
return Promise.reject(error?.response?.data)
})
}
此条实例是我们要添加数据,所以我们需要把添加的数据传给后台,是需要传值的,所以这里是有参数的,
item之前是地址,item 是一个参数
7.当我们这些数据请求的代码写好之后,我们需要在实施数据请求的页面中书写数据请求的准备了,在数据请求中,vuecli3是放在onMounted中的,同时我们需要把你数据请求的数据也要给引入过来
import {onMounted} from "vue"
import {请求数据名} from "@/actions/index.js"
请求页面的请求代码书写
onMounted(async()=>{
const resource = await fetchResources();
data.resource = resource;
}
await 的后面就是数据请求的名字(你自己刚才定义的,用resource来接收,data.resource是你在页面中定义的数据,并将data.resource拥有等同于resource的值,使得data.resource中是有值的