亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

node.js代理跨域 「案例: 音樂接口」

標簽:
Node.js

前面写到的jsonp 还是 html postMessage 实现跨域,都是在客户端上实现的,但本身有缺陷,前面有举例讲到,下面写写在服务端代理跨域。(ps:了解之前最好先掌握http协议相关知识~分享资料)

2个点:expressaxios
先了解一下这两点,根据文档说明看看怎么使用:
express:基于 Node.js 的 web 应用开发框架
axios:一个基于 promise 的 HTTP 库

小白:菜哥哥,了解完这两个要怎么请求?
老菜:先抛开这些,平时我们怎么去请求数据呢?
小白:平时是后端给接口呀!
老菜:对呀.那假如我们让后端请求完数据同样以接口的方式返回给我们不就可以了嘛。同理,通过node.js请求数据 ,我们直接调接口就好了呀

ps: 这里是vue-cli+webpack构建的项目, 原理一样,下面直接代码:
项目中找到webpack.dev.config.js 文件夹
安装express、axios

const axios = require('axios') //引入axiosconst express = require('express') //引入expressconst app = express() //请求serverconst apiRoutes = express.Router()
app.use('/', apiRoutes)const devWebpackConfig = merge(baseWebpackConfig, {  devServer: {
    before (app) {      //   /getRankings就是接口地址
      app.get('/getRankings', (req, res) => {        const url = 'https://c.y.qq.com/v8/fcg-bin/fcg_myqq_toplist.fcg'
        axios.get(url, {          params: req.query
        }).then((response)=>{
          res.json(response.data)
        }).catch((e)=>{          console.log(e)
        })

      })
    }
  }
})

上面服务端代理跨域请求数据,接下来客户端怎么调用?

前面写到 接口是 /getRankings,那么客户端调取就很简单了

function getRankings () {  const url = '/getRankings'
  const data = Object.assign({},  {         //参数
  })  return axios.get(url, {    params: data
  }).then((res) => {    return Promise.resolve(res.data)
  })
}

案例:请求qq音乐中的接口

github代码

jsonp和node.js两种形式的跨域,可以clone下来看看

大菜:前面我说比较喜欢用服务端代理跨域,感觉服务端强大一点,可以配置请求头header之类等等,小白啊,推荐一篇关于跨域的文章 一篇文章可以解决跨域,还有独门秘诀,  先知理,而后明之

小白结语:
之前我强硬的记住怎么解决,而不知原理,换到其他场景去跨域就不知如何解决,兜兜转转,结合前面几篇跨域笔记是我浅显的理解,继续去啃独门秘诀~~



作者:Searchen
链接:https://www.jianshu.com/p/ff8cf4beaa7a


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消