• axios请求总结


    axios是第三方封装库,作用是在框架中使用数据请求

    文档说明地址:https://www.npmjs.com/package/axios

    安装:

    (1)npm

    $ npm install axios –S

    (2)CDN     

    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>

    特点:

    - 1. 它在浏览器中创建的是浏览器对象

    - 2. 它底层是用Node.js中的http模块实现的

    - 3. 支持Promise

    - 4. 可以拦截请求和响应

          功能: loading加载效果、登录拦截

    - 5. 转换请求和响应数据

    - 6. 自动转换为JSON数据

    - 7. 客户端支持防止XSRF 

    - 8. axios会自动封装数据

     

    使用:

    一、模拟数据

    1.Mock模拟数据的请求 

    (1)mock.js生成(在mock 目录)

    (2)线上拷贝

    (3)线上的 http://jsonplaceholder.typicode.com/

    2.后端接口的请求

    后端渲染模板:https://www.showdoc.cc/

    二、发送请求

    (1)get请求

    无参数:

    axioa写在vue里面的methods下面的函数里

      1  reg () {
      3         axios({
      4           url: ` `,
      5           method: 'GET',//默认就是get请求,这个可以不写
      6           params: {
      7             a: 1,
      8             b: 2
      9           }
     10         }).then( res => {
     11           console.log( res )
     12         }).catch( err => console.log( err ))
     13       }

    或者

      1  axios.get('./mock/data/data.json')
      2           .then( res => {
      3             console.log( res )
      4           })
      5           .catch( err => console.log( err ))
      6       }

     

    有参数:

      1  axios.get(`${ DEV_BACK_URL }/shop`,{
      2           params: { //get请求携带参数
      3             a: 1,
      4             b: 2
      5           }
      6         }).then( res => {
      7           console.log( res )
      8         }).catch( error => console.log( error ))

    get请求携带参数用params

    (2)post请求

    post请求必须先设置请求头

      1   /* 统一设置post请求头 */
      2   axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
      3   new Vue({
      4 

     

      1 const p = new URLSearchParams() //得到参数携带对象
      2         // p.append( 参数,参数值 )
      3         p.append( 'username','张骏' )
      4         p.append( 'password','123' )
      5         p.append( 'name','骏哥' )
      6         axios({
      7           url: `${ DEV_BACK_URL }/register`,
      8           data: p,// post请求携带参数的配置项
      9           method: 'POST',
     10           withCredentials: true,
     11         }).then( res => console.log( res ))
     12           .catch( err => console.log( err ))

    post请求携带参数的用data,用p.append添加参数


    三、封装

      1 /*
      2   封装一下axios
      3     ! 它是一个函数,因为它要携带参数
      4 */
      5 
      6 
      7 function request ({
      8   url,
      9   method = 'get' || 'GET',
     10   headers,
     11   params,
     12   data,
     13   baseURL,
     14   auth,
     15   withCredentials = false
     16 }) {
     17   axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'
     18   // axios.defaults.headers.token = 'sdfsdfs' 
     19   axios.defaults.baseURL = baseURL
     20   return new Promise(function ( resolve,reject ) {
     21     console.log('method',method)
     22     switch ( method ) {
     23       case 'get' || 'GET':
     24         axios({
     25           url,
     26           params,
     27         }).then( res => resolve( res ))
     28           .catch( err => reject( err ))
     29         break;
     30       case 'POST':
     31         console.log('post - p')
     32         const p = new URLSearchParams()
     33         // data  {a:1,b:2}
     34         if ( data ) {//data存在,那么我们才遍历,不存在,那么我们不遍历
     35           for( let key in data ) {
     36             p.append( key, data[ key ] )
     37           }
     38         }
     39         axios({
     40           url,
     41           data: p,
     42           method,
     43           auth,//针对登录做判断,判断这个用户是普通用户还是超级管理员
     44           withCredentials//这个请求是否具有跨源的凭证
     45         }).then( res => resolve( res ))
     46           .catch( err => reject( err ))
     47         break;
     48       case 'PUT':
     49           axios({
     50             url,
     51             params,
     52             method
     53           }).then( res => resolve( res ))
     54             .catch( err => reject( err ))
     55         break;
     56       case 'DELETE':
     57           axios({
     58             url,
     59             params,
     60             method
     61           }).then( res => resolve( res ))
     62             .catch( err => reject( err ))
     63         break;
     64 
     65       default:
     66         break;
     67     }
     68   })
     69 }
     70 
     71 

     

     

    每天都要努力微笑,努力学习,每一天都要对得起自己。
  • 相关阅读:
    linux_java_同时启动三个项目脚本
    Python 项目-飞机大战_02.飞机大战-2
    Python 项目-飞机大战_01.飞机大战-1
    Mysql为什么要使用视图?
    Python语法基础_10.加强练习
    Python语法基础_09.面向对象3、异常、模块
    crontab--设置周期性被执行的指令
    面试者应向公司问什么问题?
    简单的触发黑名单阻断演示 control+c
    SetConsoleCtrlHandler演示
  • 原文地址:https://www.cnblogs.com/likecn/p/11716767.html
Copyright © 2020-2023  润新知