美文网首页
由ajax到axios(koa项目)

由ajax到axios(koa项目)

作者: 似朝朝我心 | 来源:发表于2021-05-13 13:38 被阅读0次

    什么是axios?

    • 其实axios是ajax的升级版,axios库是一个改进ajax底层的库,它可以把原生的ajax库加入更多实用的功能,以及提供更多方便的操作。
    • axios是一个基于promise的HTTP库,他可以用在浏览器和Node.js环境中。从浏览器中创建XMLHttpRequest,从Node.js中创建http请求。
    • axios对原生的ajax作出了进一步的封装,提供了更多的实用功能以及简化了原生底层的操作,对于发起请求非常方便。

    axios官网:http://www.axios-js.com/zh-cn/docs/index.html

    axios的优势

    • 无论在前端还是后端,axios都可以发起请求,只要是同一个API接口。
    • 同样的API,node和浏览器都支持,平台切换没有任何的压力。
    • 可以使用的Promise管理异步和并发,告别传统的callback回调函数的方式,避免回调地狱。
    • 可以实现一些例如:拦截器、取消请求、自动转换JSON数据等(如果是原生的ajax,不仅需要设置请求头的信息,告诉浏览器这是一个application/json类型,而且需要使用JSON.parse()和JSON.stringfy()方法进行转义的。)

    原生ajax是这样转换JSON数据的。

    JSON.parse(xhr.responseText)
    
    xhr.setRequestHeader('Content-Type', 'application/json') //设置请求头信息
        xhr.send(JSON.stringify({
            "page": 0,
            "count": 10
            })) //转义json数据
    

    axios.get()发起请求

    首先使用脚本引入

    <script src="./javascripts/axios.min.js" type="text/javascript" charset="utf-8"></script>
    

    axios.get()发起请求方式1:

            <script type="text/javascript">
                axios.get('/list?userName=qfb&age=21')
                .then((res)=>{
                    console.log(res)
                })
                .catch((err)=>{
                    console.log(err)
                })
            </script>
    

    后端代码

    router.get('/list', async (ctx, next) => {
        console.log(ctx.request.query)
        ctx.body = {
            errCode:0,
            errMsg:"ok",
            list:[
                {"userName":"覃放","age":22}
            ]
        }
    })
    

    控制台:



    后端接收



    axios.get()发起请求方式2:使用get方法的第二个参数params进行参数携带

            <script type="text/javascript">
                axios.get('/list',{
                    params:{
                        userName:'qfb',
                        age:21,
                        gender:'男'
                    }
                })
                .then((res)=>{
                    console.log(res)
                })
                .catch((err)=>{
                    console.log(err)
                })
            </script>
    

    后端代码不变。

    控制台效果预览:




    后端查看:



    axios.post()发送请求

            <script type="text/javascript">
                axios.post('/list2',{
                        userName:'qfb',
                        age:22,
                        gender:'女'
                })
                .then((res)=>{
                    console.log(res)
                })
                .catch((err)=>{
                    console.log(err)
                })
          </script>
    

    后端代码:

    router.post('/list2', async (ctx, next) => {
        console.log(ctx.request.body)
        ctx.body = 'list2'
    })
    

    post请求会自动转化为json数据



    后端接收查看:



    axios.post()请求,如果它的第二个参数,写成字符串的形式,会自动转化成“名称值对”的形式。

            <script type="text/javascript">
                axios.post('/list2','userName=西奥&age=23&gender=男')
                .then((res)=>{
                    console.log(res)
                })
                .catch((err)=>{
                    console.log(err)
                })      
            </script>
    

    控制台效果:




    后端接收查看:


    相关文章

      网友评论

          本文标题:由ajax到axios(koa项目)

          本文链接:https://www.haomeiwen.com/subject/bhnzdltx.html