• Vue.js笔记(三) axios与proxy反向代理配置


    axios

    什么是axios?

    Vue.js 2.0 版本推荐使用 axios 来完成 ajax 请求。

    Axios 是一个基于 Promise 的 HTTP 库,可以用在浏览器和 node.js 中。

    Github开源地址: https://github.com/axios/axios

    Vue2.0之后,尤雨溪推荐大家用axios替换JQuery ajax

    安装方法

    使用 cdn:

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

    <script src="https://cdn.staticfile.org/axios/0.18.0/axios.min.js"></script>
    

    在vue项目根下使用 npm:

    $ cnpm install --save axios
    

    使用

    我们先准备一个test.json文件

    跑看看以下代码

    axios.get("test.json").then(res=>{
    	console.log(res);
    }).catch(err=>{
    	console.log(err);
    })
    

    1583156097815

    发现传回来的数据在.data.data里面

    还包括熟悉的200状态码之类的

    小做更改,就能通过axios进行ajax请求了

    一个简单的demo

    <body>
        <div id="vm">
            <ul>
                <button @click="handleclick">获取数据</button>
                <li v-for="data in datalist" >
                    <p>{{data.name}}</p>
                    <img :src="data.poster" alt=""/>
                </li>
            </ul>
        </div>
        <script type="text/javascript">
    
            var vm = new Vue({
                el: '#vm',
                data: {
                    datalist: []
                },
                methods: {
                    handleclick: function () {
                        axios.get("test.json").then(res=>{
                            console.log(res.data.data.films);
                            this.datalist = res.data.data.films
                        }).catch(err=>{
                            console.log(err);
                            
                        })
                    }
                }
            })
        </script>
    </body>
    

    点击获取数据按钮后会进行ajax请求,网页变为如下:

    1583156218894

    反向代理

    官方文档:https://cli.vuejs.org/zh/config/

    vue.config.js 是一个可选的配置文件,如果项目的 (和 package.json 同级的) 根目录中存在这个文件,那么它会被 @vue/cli-service 自动加载。你也可以使用 package.json 中的 vue 字段,但是注意这种写法需要你严格遵照 JSON 的格式来写。

    获取跨域ajax

    从猫眼电影上找到一个ajax请求

    1583157437541

    http://m.maoyan.com/ajax/moreComingList?ci=209&token=&limit=10&movieIds=1208919%2C1301774%2C1241385%2C1233290%2C1197077%2C1222268%2C1218142%2C1218188%2C1250661%2C1277751&optimus_uuid=9E2131905C8611EA918CEB3F73C50396C646A00022474FE6B0E7E55F3CF3B523&optimus_risk_level=71&optimus_code=10
    

    把(一)中的demo做成组件

    <template>
        <div>
            <ul>
                <button @click="handleclick">获取数据</button>
                <li v-for="data in datalist" :key="data.name">
                    <p>{{data.name}}</p>
                    <img :src="data.poster" alt=""/>
                </li>
            </ul>
        </div>
    </template>
    
    <script>
    import axios from 'axios'
    export default {
      methods: {
        handleclick () {
          axios.get('http://m.maoyan.com/ajax/moreComingList?ci=209&token=&limit=10&movieIds=1208919%2C1301774%2C1241385%2C1233290%2C1197077%2C1222268%2C1218142%2C1218188%2C1250661%2C1277751&optimus_uuid=9E2131905C8611EA918CEB3F73C50396C646A00022474FE6B0E7E55F3CF3B523&optimus_risk_level=71&optimus_code=10').then(res => {
            console.log(res)
          })
          console.log('click')
        }
      },
      data () {
        return {
          datalist: []
        }
      }
    
    }
    </script>
    

    跑一下,发现报错:跨域请求

    1583157599116

    添加vue.config.js

    根据官方文档https://cli.vuejs.org/zh/config/#devserver

    直接把模板拿来改

    module.exports = {
      devServer: {
        proxy: {
          '/ajax': {
            target: 'http://m.maoyan.com',
            changeOrigin: true
          }
        }
      }
    }
    

    记住要放在根目录中

    img

    然后把axios中的头部去掉!

    改为

    axios.get('ajax/moreComingList?ci=209&token=&limit=10&movieIds=1208919%2C1301774%2C1241385%2C1233290%2C1197077%2C1222268%2C1218142%2C1218188%2C1250661%2C1277751&optimus_uuid=9E2131905C8611EA918CEB3F73C50396C646A00022474FE6B0E7E55F3CF3B523&optimus_risk_level=71&optimus_code=10').then(res => {
    	console.log(res)
    })
    

    还是不行?

    再跑一下,发现依旧报错了,怎么办?

    1583157886756

    原来是因为修改完config需要重启项目

    重启项目

    重新yarn serve一下,点击发现东西拿到了。

    然后就是和(一)一样的内容了,该怎么处理怎么处理

    1583158003669

  • 相关阅读:
    Linux磁盘分区、挂载
    crond任务调度
    Form组件使用
    Django路由系统
    Django中模板简单使用
    ORM常用操作
    IO多路复用
    vscode必装插件
    Flask-RESTful扩展
    flask-caching
  • 原文地址:https://www.cnblogs.com/cpaulyz/p/12401726.html
Copyright © 2020-2023  润新知