首页 > 其他分享 >网络请求

网络请求

时间:2022-09-30 10:46:42浏览次数:45  
标签:axios 请求 网络 拦截器 router post 路由

网络请求

关于请求文档的分类有rest风格和非rest风格

rest风格请求路径相同,请求方式不同,get post delete put四中方式

非rest只有get/post

 

学习了json-server post-man api-doc专门生成关于api接口网页的工具

urlencode 是query携带参数的方式用?和&连接属性和值。

params方式是在请求地址用/分割里面是值没有属性,经常会当成路由的一部分不太直观

get请求和post请求

get请求用原生的xhr方式发送可以携带query参数 urlencoded形式?key=val & 和params / name /age参数

 

post请求也可以携带query和params参数,但是post请求有请求体,我们会用请求体携带参数,请求体的形式有urlencoded和json

发送post要携带特殊的请求头服务器才能响应数据

 

cors解决跨域

因为同源策略的影响只有相同域名网址端口号才能请求数据。如果跨域可以用jsonp,前端定义一个函数,通过script标签向后端请求,后端发过来一个函数的调用,里面的参数就是数据。

通过cors解决跨域,需要后端进行配置特殊的相应头解决跨域,一般弟二个参数是允许访问的网址,*好表示都允许,一般都需要一组设置相应头来解决跨域。get和post是简单请求,put delete是复杂请求都会有预请求配置跨域还需要配置预请求的options

完美简单解决跨域需要借助中间件cors

app.use(cors)自动解决跨域

 

axios没有设置关于参数params的配置项只能在地址里面写 /

其中query和请求体参数都有配置get请求的配置项是params,post,put,delete是data配置项

 

axios的各种请求各种参数各种发

发送get请求携带query参数

要写在params配置项里面,或者直接写在请求地址里

get请求携带params参数直接写在url里面

发送post请求,携带请求体参数

要配置data配置项携带参数 当参数类型是urlencode形式直接拼串,当参数是json写在对象里

精简版的不写data配置项,指着data里面的内容json和urlencode一样就写内容

put请求和post一样都是携带请求体参数,同上, delete请求携带的是params参数,直接写在url里面/ /

axios其他配置信息

给所有请求配置相同的请求信息比如超时时间,请求头,默认基础地址

axios.defaults.信息

axios可以创建不同的实例来发送不同地址,方式的请求 axios.create({ })

关于拦截器的强化

拦截器的作用,对请求和响应做一下预处理,请求拦截器添加特殊相应头loading等,响应拦截器成功可以对成功的数据做过滤返回干净的数据。响应拦截器失败可以对错误可以做统一处理 简化了原始的.then和try catch捕获错误的方式

 

请求拦截器axios.interceptors.request在请求发送之前对请求做进一步校验,追加请求头添加loading的效果,必须return config出去否则语法发送请求

响应拦截器用处比请求拦截器多,

axios.interceptors.response.use

是在响应回来之前做进一步处理,有成功和失败两个回调函数,成功的回调我们可以对数据做进一步解析return response.data返回数据

 

失败的回调最重要,响应拦截器响应数据失败必须返回一个失败的promise,后面的请求才能接受错误。如果是pending状态后面的请求永远也不能接受到错误,

new Promise(()=>{ })pending状态

所以可以在拦截器里面做错误判断省略.then和try catch里面捕获错误

 

promise

.then方式

捕获网络错误,axios发送请求找出错误需要指定error 的回调

.then(response=>{ },error=>{ })

await方式

需要用try catch捕获网络错误

因为await后面只有成功

有了响应拦截器我们可以统一处理错误,也不用.then指定error也不用try catch捕获了

axios的常见属性

axios.interceptors axios.get/post

axios.defaults axios.created axios.all批量发送

路由记忆知识点

把路由文件挂载到Vue原型,所有的组件都会有$router和$route属性

router路由器规则 route组件对应的路由

routes所有的规则

编程路由导航 this.$router.push

显示传过来的参数 this.$route.query

 

路由中router-view 每一个路由等级对应响应的router-view ,比如一级路由一个router-view 他的子路由二级路由也有对应的router-view ,如果二级路由没有指定router-view也不会跨级显示到父路由

在app.vue中里面只有一个router-view

因为路由规则是path: / 下面也有组件显示

 

路由就是通过触发,按照一定路由规则router,把规则对应的组件在router-view中做展示。比如首页通过重定向 / 规则把index.vue显示在app.vue的router-view中

 

关于路由和网络请求的相似处

网络请求 是向服务器请求数据做渲染展示

路由 是向路由规则请求组件

标签:axios,请求,网络,拦截器,router,post,路由
From: https://www.cnblogs.com/notes321/p/16744109.html

相关文章