所有分类
  • 所有分类
  • 后端开发
Vue开发新招!Axios轻松解决后端API问题,告别烦人CORS跨域

Vue开发新招!Axios轻松解决后端API问题,告别烦人CORS跨域

在使用vue进行开发时,我们经常需要与后端api服务器进行交互。sharing)问题,通常会在vue的配置中使用代理转发进行请求转发。我们也可以通过Webpack的插件来实现不使用代理转发的请求。

使用第三方库

在搞Vue开发时,绕开后端API服务器的方法并不新鲜。比如,碰到烦人的CORS跨域问题,我们就让代理来解决。但有时候,我们还得直接去跟API服务器沟通。这时候,借助第三方库,比如Axios这个HTTP客户端库,就能轻松应对。这样一来,我们在Vue项目中发送请求、处理响应也就游刃有余了!

先用npm或yarn安装上Axios,接着把它导入想要发请求的组件里面。别忘了设置头部和参数,这样才能和API服务器愉快聊天。比如想请API服务器帮忙拿东西,那就用Axios的get方法发送GET请求,再加上header的contentType: application/json这个要求,搞定!

这么弄的话咱就不用通过中介程序,可以直接和API服务器手牵手了,前后端交流也更灵活咯~

使用Webpack Plugin

除了外挂第三方包,用Webpack插件也能解决跳过代理的问题!简单的操作就是将Express和http-proxy-middleware这俩插件搭配使用,在自家电脑装个小服务器来替代代理服务器。这样就能直接连到API服务器。

具体实现步骤如下:

npm install axios --save

首先,先要安装好Express跟Http-Proxy-Middleware这俩插件!

就在项目里加个名叫’server.js’的文件,这就是启动本地服务要用到的!

首先咱得让’server.js’这个文件搞上express服务。然后借助http-proxy-middleware插件,设定好代理规则,把所有请求都转发给目标API服务器!

要用 Vue 的组件发送请求?只需要把我们本地搭建好的那台服务器地址填进去就好了

搞定这几个步骤,就可以直接和API服务器聊天了,前后端接口调试、管理的工作都变得轻松不少!

跨域资源共享(CORS)问题

import axios from 'axios'
axios.get('/api/getUserInfo', {
  headers: {
    'Content-Type': 'application/json'
  }
}).then(res => {
  console.log(res)
})

说到前后端分离式开发,我们可得注意那个坑爹的“浏览器同源政策”。你知道吗?这是个针对跨网站数据传输的规定。举个例子,你想想看,前端网页在自己的地盘localhost:8080上打转儿,但是后台API服务却待在localhost:3000那儿。这时候,哦豁,不让人头疼的跨域问题就来了。

遇到跨域CORS问题,咱常用的办法就是在后头设置个“允许跨域访问”,比如加上”Access-Control-Allow-Origin”头条什么的,或者把以前的代理发转发搞定。但有的时候,咱就是想摆脱这些规矩,想跟API服务器直接交流!

Vue开发新招!Axios轻松解决后端API问题,告别烦人CORS跨域

原生Fetch API

给你个小tips,不只是AXios,你还有原生Fetch API可以用~这玩意儿是专门针对Promise设计出来的,应付大多数浏览器都没问题。有了它,你就能轻而易举地发出GET、POST等各种HTTP请求,并且还能自由设置请求头部和参数这些细节!

别怕,用fetch!vue组件中,用这个叫fetch的函数就能搞定了。你只要指定好要连的网址,它就能自动响应并回传结果。相较于其他像Axios那样的库,它简单得让人惊艳,而且还有内置的Promise功能!

WebSocket通信

不用只知道HTTP那个常用方式了,有时候试试WebSocket也挺好。它就像搭了个TCP的桥把两边的声音都传过去,特别适合前后端传东西的时候。

简言之,咱们通过在Vue项目中安装像’Socket.io-client’这种WebSocket工具包,再配合上Websocket网络就可以轻松搞掂前后端的实时通信!这样一来,站在网页上看服务器传过来的数据,就能马上响应,你看起来也就更赞啦~

GraphQL查询语言

哈喽!想要处理麻烦点儿的数据查询?试试看 GraphQL这款由脸书搞出来的货色,它就是个查询语言加上运行时环境,帮你把数据查询变得更快、更好、更溜儿。

你只要在你的项目里安装个叫做Apollo Client的GraphQL客户端库,然后填写下GraphQL服务器地址和查询语句这些信息,就可以用Vue组件发出查询,搜刮你想要的数据!GraphQL比起之前那种RESTful风格的接口要快得多,也好用多了,它可以让你一次找到你想要的所有数据,甚至可以检索多层级的数据!

npm install express http-proxy-middleware --save-dev

Mock数据模拟

接口没完全弄好,或者有时候连不上真实的服务器,别急!用 Mock 数据模拟工具试试看。

哦吼!Mock.js真是太牛逼了,搞前端模拟数据就靠它。只要照着正常接口样子弄些假数据出来,然后再借用axios-mock-adapter这个小伙伴,Ajax请求模拟调试也就没那么难了。

安全性考虑

哦对了,我们可要留意和 API 服务器之间交流的安全性!就说像传密钥这种事儿,就要用HTTPS确保不会出问题;另外千万别掉以轻心,像XSS和CSRF之类的网络陷阱可得提防着点;还有就是,设置好CORS策略才不会让咱的私人数据轻易地落入坏人手里

反正嘞,做Vue项目的时候和API服务器搞些花样特别多啊:比如用Axios、fetch API这样的大家伙,也能用到WebSocket这种高科技玩法,或者试试看GraphQL查数语啥的。再搭配上模拟数据mock一下,应付各种怪事完全不在话下,前端后端的合作也会变得更加愉快!

const express = require('express')
const proxy = require('http-proxy-middleware')
const app = express()
app.use('/api', proxy({
  target: 'http://api.server.com',
  changeOrigin: true,
  pathRewrite: {
    '^/api': ''
  }
}))
app.listen(3000, () => {
  console.log('Server is running at localhost:3000')
})

原文链接:https://www.icz.com/technicalinformation/web/javascript/2024/04/12864.html,转载请注明出处~~~
0

评论0

请先
注意:请收藏好网址www.icz.com,防止失联!站内免费资源持续上传中…!赞助我们
显示验证码
没有账号?注册  忘记密码?