• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
何日才能成为大神
博客园    首页    新随笔    联系   管理    订阅  订阅

axios

 
axios.get("http://127.0.0.1:5000/api/projects")
  1. Promise {<pending>} 返回异对象,和协程函数执行后返回对象差不多,异步执行
  2. 我只管发请求,后端给响应了,我再去执行,Promise 表示未来执行的一个对象,这个对象什么时候执行呢?后端给我响应了我才立即去执行。执行什么呢?执行这样的回调
  3. 发了请求不会等,什么时候响应结果回来,才会执行回调函数
  4. axios请求都是异步的
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>

</head>
<script>
    // const res1 = axios.get("http://127.0.0.1:5000/api/projects/name")
    // console.log("res1", res1)
    //     // 当请求成功时(响应状态码为2系列),会执行then方法传入的回调函数
    // res1.then(function(response) {
    //         console.log(response)
    //     })
    //     //当请求失败,会执行catch方法传入的回调函数
    // res1.catch(function(error) {
    //         console.log(error)
    //         console.log(error.response)
    //     })
    //     //js支持链式调用
    // axios.get("http://127.0.0.1:5000/api/projects").then(function(response) {
    //     console.log(response)
    // }).catch(function(error) {
    //     console.log(error)
    //     console.log(error.response)
    // })
    // const res2 = axios.get("http://127.0.0.1:5000/api/projects")
    // console.log("res2",
    //     res2)
    // res2.then(function(response) {
    //     console.log(response)
    // })
    // const res3 = axios.get("http://127.0.0.1:5000/api/projects")
    // console.log(res3)
    // res3.then(function(response) {
    //     console.log("res3", response)
    // })
    // console.log("python")



    // axios.get("http://127.0.0.1:5000/api/interface", {
    //     //传递查询字符串参数
    //     params: {
    //         id: '1001'
    //     }
    // }).then(function(response) {
    //     console.log(response)
    //         //获取响应状态码
    //     console.log(response.status)

    //     //获取响应数据
    //     console.log(response.data)

    // }).catch(function(error) {
    //     console.log(error)
    //     console.log(error.response)
    // })


    //post请求 json格式传参
    // axios.post("http://127.0.0.1:5000/api/user/login", {
    //     user: "python01",
    //     pwd: "lemonban"
    // }).then(function(response) {
    //     //获取响应数据
    //     console.log(response.data)

    // }).catch(function(error) {
    //     console.log(error)
    //     console.log(error.response)
    // })


    //post请求 表单格式传参,配置
    // var params = new URLSearchParams();
    // params.append("user", "python01")
    // params.append("pwd", "lemonban")
    // let burl = "http://127.0.0.1:5000/"
    // axios.post("api/user/login ", params, {
    //     headers: {
    //         musen: "123456"
    //     },
    //     baseURL: burl
    // }).then(function(response) {
    //     //获取响应数据
    //     console.log(response.data)
    //     console.log(response)

    // }).catch(function(error) {
    //     console.log(error)
    //     console.log(error.response)
    // })

    // //全局请求配置
    // axios.defaults.baseURL = 'http://127.0.0.1:5000';
    // axios.defaults.headers.common['musen'] = "1234";
    // var params = new URLSearchParams();
    // params.append("user", "python01")
    // params.append("pwd", "lemonban")
    // axios.post("/api/user/login ", params).then(function(response) {
    //     //获取响应数据
    //     console.log(response.data)
    //     console.log(response)

    // }).catch(function(error) {
    //     console.log(error)
    //     console.log(error.response)
    // })

    //针对多个后端服务的场景,针对于微服务,多个URL处理
    // const .podt = axios.create({
    //     baseURL: 'http://127.0.0.1:5000'
    // });

    // // Alter defaults after instance has been created
    // requestA.defaults.headers.common['musen'] = "123";
    // var params = new URLSearchParams();
    // params.append("user", "python01")
    // params.append("pwd", "lemonban")
    // requestA.post("/api/user/login ", params).then(function(response) {
    //     //获取响应数据
    //     console.log(response.data)
    //     console.log(response)

    // }).catch(function(error) {
    //     console.log(error)
    //     console.log(error.response)
    // })

    // const requestB = axios.create({
    //     baseURL: 'http://baidu.com'
    // });

    // // Alter defaults after instance has been created
    // requestA.defaults.headers.common['musen'] = "123";
    // var params = new URLSearchParams();
    // params.append("user", "python01")
    // params.append("pwd", "lemonban")
    // requestB.post("/api/user/login ", params).then(function(response) {
    //     //获取响应数据
    //     console.log(response.data)
    //     console.log(response)

    // }).catch(function(error) {
    //     console.log(error)
    //     console.log(error.response)
    // })


    // //需要鉴权接口处理
    // const requestA = axios.create({
    //     baseURL: 'http://47.112.233.130:8888/'
    // });

    // // /users/login/
    // requestA.post("/users/login/", {
    //     username: "musen002",
    //     password: "123456",
    // }).then(function(response) {
    //     //获取响应数据
    //     console.log(response.data)
    //     console.log(response)
    //     let token = response.data.token
    //         //保存token到locaStroge,前端存储数据的方式
    //     window.localStorage.setItem("token", token)
    //     window.sessionStorage.setItem("token", token)
    // }).catch(function(error) {
    //     console.log(error)
    //     console.log(error.response)
    // })

    // let token = 'Bearer ' + window.localStorage.getItem("token")

    // // 前端怎么保存token,保存在 本地存储空间(关闭不会清空),会话存储空间(关闭窗口会清空),都是保存到浏览器
    // // /projects/
    // requestA.get("/projects/", {
    //     headers: {
    //         Authorization: token
    //     }
    // }).then(function(response) {
    //     //获取响应数据
    //     console.log(response.data)
    //     console.log(response)

    // }).catch(function(error) {
    //     console.log(error)
    //     console.log(error.response)
    // })


    //请求拦截器,所有的请求发送前,定义拦截器,理解为钩子函数,请求前先调用拦截器

    // const requestA = axios.create({
    //     baseURL: 'http://47.112.233.130:8888/',
    //     // 自定义当成成功处理的http状态码范围
    //     validateStatus: function(status) {
    //         return status >= 200 && status < 300; // default
    //     }
    // });


    // // 添加请求拦截器
    // requestA.interceptors.request.use(function(config) {
    //     // 在发送请求之前做些什么
    //     //处理token
    //     //判断路径是不是登录接口,如果是不加token,如果不是加token
    //     console.log(config)
    //         //判断请求是不是登录接口
    //     if (config.url == '/users/login/') {
    //         return config
    //     } else {
    //         //需要鉴权
    //         if (window.localStorage.getItem("token")) {
    //             config.headers["Authorization"] = 'Bearer ' + window.localStorage.getItem("token");
    //             return config;
    //         } else {
    //             alert("没有权限访问");
    //             return config;
    //         }

    //     }

    // }, function(error) {
    //     // 对请求错误做些什么
    //     return Promise.reject(error);
    // });

    // //简短版
    // // 添加请求拦截器
    // requestA.interceptors.request.use(function(config) {
    //         // 在发送请求之前做些什么
    //         //处理token
    //         //判断路径是不是登录接口,如果是不加token,如果不是加token
    //         console.log(config)
    //             //判断请求是不是登录接口
    //         if (config.url == '/users/login/') return config
    //             //需要鉴权
    //         if (!window.localStorage.getItem("token")) return config;
    //         config.headers["Authorization"] = 'Bearer ' + window.localStorage.getItem("token");
    //         return config;
    //     },
    //     function(error) {
    //         // 对请求错误做些什么
    //         return Promise.reject(error);
    //     });

    // //响应拦截器:执行回调函数前,执行的函数
    // // 在响应拦截器中可以对响应的http状态做相关判断,然后进行相关的处理
    // requestA.interceptors.response.use(function(response) {
    //     // 对响应数据做点什么
    //     // 后端先到拦截器,再到then
    //     // 通常没有权限,页面会做一个警告提示,后端服务异常
    //     console.log("响应拦截器1", response)
    //     return response;
    // }, function(error) {
    //     // 对响应错误做点什么
    //     console.log("响应拦截器2", error)
    //     console.log("响应拦截器2", error.response.data.detail)

    //     if (error.response.status == 401) {
    //         alert(error.response.data.detail);
    //     }
    //     return Promise.reject(error);
    // });

    // // /users/login/
    // requestA.post("/users/login/", {
    //     username: "musen0023",
    //     password: "123456",
    // }).then(function(response) {
    //     //获取响应数据
    //     console.log(response.data)
    //     console.log(response)
    //     let token = response.data.token
    //         //保存token到locaStroge,前端存储数据的方式
    //     window.localStorage.setItem("token", token)
    //     window.sessionStorage.setItem("token", token)
    // }).catch(function(error) {
    //     console.log(error)
    //     console.log(error.response)
    // })

    // // /projects/
    // requestA.get("/projects/").then(function(response) {
    //     //获取响应数据
    //     console.log(response.data)
    //     console.log(response)

    // }).catch(function(error) {
    //     console.log(error)
    //     console.log(error.response)
    // })


    const requestA = axios.create({
        baseURL: 'http://47.112.233.130:8888/',
        // 自定义当成成功处理的http状态码范围
        validateStatus: function(status) {
            return status >= 200 && status < 300; // default
        }
    });


    //对于异步请求都可以做async await处理
    // async  定义异步函数
    async function login() {
        // await等待异步代码执行完成,直接response返回,
        console.log("111")
            // 同一函数体里面 await ,必须等await里面代码执行完才会继续往下面走
        let response = await requestA.post("/users/login/", {
            username: "musen002",
            password: "123456",
        })
        console.log("222")

        console.log("login", response)
            //等接口响应回来才会继续往下面执行,比如下面调用获取项目用例接口,只有登录接口执行完毕,才会继续往下面执行
            //定义了 async 就是异步函数,之前只是发请求是异步的,现在是整个函数是异步的
    }

    login()
    console.log("333")
        //打印结果是 111,222,login因为login是个异步函数
</script>

<body>


</body>

</html>

 

 

posted @ 2022-05-28 17:06  何日才能成为大神  阅读(49)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3