简单入门Fetch API 前言 Fetch API是使用 JavaScript请求资源的优秀工具。虽然我们开发时可能是经常使用axios,但是实际上Fetch API也能做很多一样的事。...基本用法 接口有需要可以到最后自取(express接口) 分派请求 只需要使用fetch()方法即可,传参为获取资源的URL。该方法返回一个Promise对象。...(使用方式和text()方法一样) 请求失败 请求失败的时候还是会正常执行then方法里的处理函数。(这里的失败是指服务器返回了响应,但是不是成功的请求。)...fetch方法的第二个参数就是自定义选项,通过自定义选项就能实现GET请求之外的请求。比如使用POST方法的时候,自定义选项就需要method来确定请求方法,以及body来确定请求体的数据。...: 200, data: { name: '赤蓝紫', age: 21 }, msg: '获取信息成功', }) }) // 响应状态码为400 app.get
首先我们先导入axios和qs两个模块。 为什么要使用qs模块? ajax请求的get请求是通过URL传参的(以?和&符连接),而post大多是通过json传参的。 qs是一个库。...在开发中,发送请求的入参大多是一个对象。在发送时,如果该请求为get请求,就需要对参数进行转化。...{ Message} from 'element-ui'; 导入之后,我们创建一个axios的实例,可以理解为对象吧。...我们以post方法为例: post(url,params){ const config = { method: 'post', url:url...然后返回中调用request,也就是axios实例,将配置携带在里面,这样这个config对象里面的配置就会与axios实例的字段信息相互补充,相当于为axios实例增加了method、url以及数据(
设置请求头:POST系列中,我们传递给服务器数据的格式一般以x-www-form-urlencoded格式为主 axios.defaults.headers['Content-Type'...设置请求拦截器(只对POST系列有用):把基于请求主体传递给服务器的内容进行拦截, // 把内容格式变为x-www-form-urlencoded这种格式,再传递给服务器...设置响应拦截器:【成功状态】把从服务器获取的结果中的响应主体获取到即可, // 【失败状态】手动将错误信息抛出异常 axios.interceptors.response.use...function (response) { return response.data }, function (error) { // 返回一个状态为错误的...return status >= 200 && status < 400 } axios.get('.
作用: 客户端浏览器根据响应状态码,即可判断出这次 http 请求是成功还是失败了。 常见的响应状态码 状态码 状态码描述 说明 200 OK 请求成功。...201 Created 资源在服务器端已成功创建 304 Not Modified 资源在客户端被缓存,响应体中不包含任何资源内容 400 Bad Request 客户端的请求方式、或请求参数有误导致的请求失败...Error 服务器内部错误,导致的本次请求失败 http 响应状态码 Vs 业务状态码 正确区分响应状态码和业务状态码的不同,是保证使用 Ajax 不迷茫的必要前提。...(成功或失败) 业务状态码用来表示这次业务处理的成功与否 ③ 通用 响应状态码是由 http 协议规定的,具有通用性。.../addbook 添加图书的接口(POST 请求) 接口测试工具 postman GET测试 POST测试
拦截Ajax请求 不需要修改既有代码,就可以拦截Ajax请求,返回模拟的响应数据。...' //全局设置:设置所有ajax请求的超时时间,模拟网络传输耗时 Mock.setup({ //延时400s请求到数据 // timeout: 400 //延时200-400s请求到数据...timeout: 200 - 400 }) 1.2.4 为每个组件准备模拟数据 为每个组件(*.vue)准备模拟数据。...//修改url的获取方式,url已经配置在了action.js中 //post请求方式 /* let url = this.axios.urls.SYSTEM_USER_DOLOGIN; this.axios.post...let url = this.axios.urls.SYSTEM_USER_DOLOGIN; this.axios.post(url, {params: params}).then(resp => {
在 axios 中,我们发起一个 http 请求后,在 then 回掉方法中进行请求成功后的数据处理,在 catch 回掉方法中捕获请求失败的信息。...与 get 请求相似,使用 axios 发起 post 请求也是在 then 回掉方法中获取接口返回值,在 catch 回掉方法中捕获错误信息。...// get 请求 axios({ method: 'get', url: 'http://localhost:5000/api/user' }) // post 请求 axios({ method...在每一个通过 axios 发起请求的 then 回掉方法中,我们都需要对获取到响应状态码进行判断,判断接口的调用是否成功。 ...例如,当调用接口不成功时,http 响应状态码为 400,同时返回错误信息,我们完全可以在拦截器中进行判断,当所有的接口响应状态码为 400 时,弹出后端返回的错误信息。
那么下面我将使用CDN的js引入方式,来写一个示例代码。 基本使用示例 1.说明 测试验证发送ajax请求,首先需要一个接收ajax的后台服务,在这里我写了一个flask的后台服务。...在前端我则使用js的引入方式编写axios示例,发送get以及post请求。...那么其中post请求主要常用有两种,如下: 一种是form请求格式 一种是json格式 2.flask的后台服务代码 from flask import Flask, jsonify, request,...,使用axios还是不能直接使用json发送请求 // 需要将请求体还为 json格式的字符串,然后 headers 设置为 text/plain 才可以正常发送请求...') 每个请求都要带上服务的url地址http://127.0.0.1:5000其实挺麻烦的,这个参数可以设置为一个全局参数,不用每个接口都去写,设置如下。
二、目录结构 src目录下新建api文件, api.ts 进行接口API的统一管理 axios.ts 封装请求配置拦截器 status.ts 管理接口返回状态码 三、axios.ts 代码内逐行解释...axios.defaults.timeout = 60000; // 请求地址,这里是动态赋值的的环境变量,下一篇会细讲,这里跳过 // @ts-ignore axios.defaults.baseURL...; } } ); // 封装 GET POST 请求并导出 export function request(url='',params={},type='POST'){ //设置 url...: message = "请求错误(400)"; break; case 401: message = "未授权,...`; }; 复制代码 五、api.ts 引入axios导出的request,按功能模块进行接口的管理 import { request } from '.
return axios .post("/course/findCourseByCondition", data) .then(resp => {...$message.error("状态修改失败! ! !")...$message.error("修改状态失败! ! !")...valid) return false; // 请求后台 axios .post( "/PromotionSpace/saveOrUpdatePromotionSpace...$message("修改状态失败! ! !")
statusText }); }else{ reject("请求失败...)) 但是,如果我想通过axios.get、axios.post 等请求方式就行不通了。...根据这些启示将代码调整为: // 构造函数 function Axios(){ } Axios.prototype.request = function (config) { // 将请求方式全部转为大写...}) } // 其它请求delete,patch省略 export default new Axios(); 这样我们终于可以通过axios.get、axios.post请求数据了。...实现多种请求方式原理完整代码: // 构造函数 function Axios(){ } Axios.prototype.request = function (config) { // 将请求方式全部转为大写
XHR 的 ajax 封装 (简单版axios) 2.1 特点 函数的返回值为promise, 成功的结果为response, 失败的结果为error 能处理多种类型的请求: GET/POST/PUT/...DELETE 函数的参数为一个配置对象 { url: '', // 请求地址 method: '', // 请求方式GET/POST/PUT/DELETE params: {}, // GET/DELETE...请求的 query 参数 data: {}, // POST/PUT 请求的请求体参数 } 复制代码 响应 json数据 自动解析为 js的对象/数组 2.2 编码实现 function axios...== 4) { return; } // 如果响应状态码在[200, 300)之间代表成功,否则失败 const {status, statusText...cancel('强制取消请求') } else { console.log('没有可取消的请求') } } 复制代码 使用拦截器改进代码,减少重复代码 // 添加请求拦截器
maxBodyLength: 2000, //设置响应状态码为多少时是成功,调用resolve,否则调用reject失败 //默认是大于等于200,小于300 validateStatus...axios.defaults.timeout = 10000; post请求头的设置 post请求的时候,我们需要加上一个请求头,所以可以在这里进行一个默认的设置,即设置post的请求头为application...响应的拦截 // 响应拦截器 axios.interceptors.response.use( response => { // 如果返回的状态码为200,说明接口请求成功,可以正常拿到数据...get函数返回一个promise对象,当axios其请求成功时resolve服务器返回 值,请求失败时reject错误值。最后通过export抛出get函数。...* @param {Number} status 请求失败的状态码 */ const errorHandle = (status, other) => { // 状态码判断 switch (
HTTP的请求方式,第一种,使用GET为查询,第二种,使用POST为添加,第三种,使用PUT为修改,第四种,使用DELETE为删除。...回调地狱,多层嵌套请求问题,请求接口调用后台数据,有两种可能性,一种为成功回调,一种为失败回调,成功后写一下成功后的操作代码,失败后也要写一下失败后的操作代码。.....)// 当异步代码失败时, 会调用 reject(...)...promise有三种状态,第一种为Pending,待定,初始状态,第二种状态为fulfilled,实现,操作成功,第三种状态为rejected,被否决,操作失败。...)}) axios的响应结果 data为响应回来的数据,headers为响应头信息,status为响应状态码,statusText响应状态信息。
) axios.get(url[, config]): 发 get 请求 axios.delete(url[, config]): 发 delete 请求 axios.post(url[, data,...Cancel 对象 (3) 在 cancelPromise 的成功回调中中断请求, 并让发请求的 proimse 失败, 失败的 reason 为 Cancel 对象 三、Axios源码模拟实现...= createInstance(); //发送请求 // axios({method:'POST'}); axios.get({}); axios.post({}); </...//失败的状态 reject(new Error('请求失败 失败的状态码为' + xhr.status)); } } }...executor(function () { //执行 resolvePromise 函数 resolvePromise(); }); } //获取按钮 以上为模拟实现的代码
先来一个情景:我们要向端口 3000 发送 get 请求,要向端口 4000 发送 post 请求 通过 axios.create(config)实现: const instance1 = axios.create...: 先定义一个变量 cancel,用于保存取消请求的函数 设置请求路径、请求方法时,还要设置属性 cancelToken,值为一个 CancelToken对象,CancelToken 类的构造函数的参数是用于请求的函数...看下下面的流程图就可能可以迎刃而解了(有错可评论指出) 为了解决上面的问题,这时候就需要使用 axios.isCancel(error)判断是不是取消请求导致的请求失败,如果是,则此时不需要把 cancel...console.log('没有可以取消的请求') } } 通过拦截器再优化:增加代码可复用性 // 请求拦截器 axios.interceptors.request.use...因为返回一个pending状态的对象时,后续的回调就不能执行了。 // 因为后面的回调函数只有在状态发生变化时才能执行。
文章目录 Axios 前后端交互工具学习 引言 引入Axios 介绍 GET请求的方式 then方法 catch方法 POST请求的方式 PUT 请求的方式 Axios的基本配置 Axios的拦截器 Vue...()、put()、post(),这个几个方法 GET请求的方式 // axios发送一个异步请求之 GET请求 axios.get("http://localhost...就不要写那么长了 还有请求发送超过5s,认为发送请求失败 这些配置在axios创建实例的时候就通过create进行配置,我们之后用instance进行发送axios请求 var instance = axios.create...Axios的拦截器 可以在发送请求之前进行拦截(token身份验证)、也可以在返回响应之后进行拦截(服务器异常统一处理),官网都有处理的代码以及各种拦截的方式!...,那么就相当于先渲染为空,然后再请求后端再次渲染,二次渲染不太好 总之 Axios的请求 要写在 Vue的生命周期函数 create() 函数中,如果axios内部要拿到data中的数据,不能使用this
/* - readyState 改变时触发 onreadystatechange 事件 - readyState: XMLHttp 请求的当前状态...3: 请求处理中 4: 请求已完成,且响应已就绪 - status:响应状态码 200:...会返回一个 Promise Fetch 不是 Ajax 的进一步封装,而是原生 JS ,没有使用 XMLHttpRequest 1. fetch的基本使用 // fetch的参数为请求的路径...json data.text() : 将返回数据转为字符串 三、axios 1. axios的基本使用 get /delete请求 post/put请求 2. axios全局配置 配置公共的请求头...= 3000; —————————— 配置公共的 post 的 Content-Type axios.defaults.headers.post['Content-Type'] = 'application
): 等同于 axios(config) axios.get(url[, config]): 发 get 请求 axios.delete(url[, config]): 发 delete 请求 axios.post...(url[, data, config]): 发 post 请求 axios.put(url[, data, config]): 发 put 请求 axios.defaults.xxx: 请求的默认全局配置...== 4) { return } // 如果响应状态码在[200, 300)之间代表成功, 否则失败 const {status,...send()方法,发送具体请求 abort()方法,停止当前请求 readyState属性请求的状态 有5个可取值0=未初始化 ,1=正在加载 2=以加载,3=交互中,4=完成 responseText...属性服务器的响应,表示为一个串 reponseXML 属性 服务器的响应,表示为XML status服务器的HTTP状态码,200对应ok 400对应not found 什么是XML XML是扩展标记语言
/** 网络请求配置 */ import axios from "axios"; axios.defaults.timeout = 50000; axios.defaults.baseURL = "...请求 * @param url * @param data * @returns {Promise} */ export function post(url, data) { return new...Promise((resolve, reject) => { axios.post(url, data).then( (response) => {...}); break; default: break; } }); } //失败提示...function msag(err) { if (err && err.response) { switch (err.response.status) { case 400
领取专属 10元无门槛券
手把手带您无忧上云