美文网首页Vue
使用node转发请求

使用node转发请求

作者: 追星人小豪 | 来源:发表于2020-09-11 10:37 被阅读0次

前言

本篇文章基于 vue、node(koa)

需求

vue 项目开发过程中,接口跨域是一个很常见的问题。在开发时候可以用 vue 自带的 proxy 可以轻松解决。生产环境下,前端项目往往是部署在后端项目下,不会存在跨域的问题,接口前缀可以忽略。

dev 环境下,请求一个产品列表接口,我们可能会这么做:

https://www.baidu.com/api/product/list

生产环境下,前缀可以忽略:

/api/product/list

问题来了,如果我们想在本地测试生产环境下的前端项目,会存在跨域的问题;发给后端部署项目又太麻烦,修改代价太大。我们可以自己部署一个简易的 node 服务,来部署自己的前端项目~

实现

0. 安装依赖

npm i koa --save-dev
npm i koa-static --save-dev
npm i koa-mount --save-dev
npm i http-proxy-middleware --save-dev
npm i koa2-connect --save-dev

1. koa 搭建简易服务端

引入 koa,然后监听端口

const Koa = require('koa');
const Koa = require('koa');
const path = require('path');

const app = new Koa();;
const port = process.env.PORT || 3000;

app.listen(port, () => {
  console.log(` Your application is running here: http://localhost:${port}`);
});

开放 dist(即打包出来的目录)

const koaStatic = require('koa-static');
const koaMount = require('koa-mount');

// 开放目录
app.use(koaMount('/', koaStatic(resolve('../dist'))));

这样差不多就完成了,跑服务然后打开 3000 端口,项目能够正常访问:


2. 转发接口请求

项目是能正常请求了,可是还需要处理接口问题,即 node 当成中间件,转发前端接口请求到真正的后端接口

const { createProxyMiddleware } = require('http-proxy-middleware');
const k2c = require('koa2-connect');

app.use(async (ctx, next) => {
  const url = ctx.path;
  if (url.startsWith('/api')) {
    ctx.respond = false;
    await k2c(
      createProxyMiddleware({
        target: # 后端的接口地址,
        changeOrigin: true,
        secure: false,
      }),
    )(ctx, next);
  }
  return await next();
});

最后再打开浏览器查看,大功告成,接口转发成功~

完整代码

完整代码


END

相关文章

  • 使用node转发请求

    前言 本篇文章基于 vue、node(koa) 需求 vue 项目开发过程中,接口跨域是一个很常见的问题。在开发时...

  • 使用node原生模块,实现静态文件服务器,反向代理和文件修改浏览

    前端遇经常会遇到跨域问题,解决的方式一般有以下几种。1 使用nginx 代理对请求进行转发2 使用node-pro...

  • node.js请求转发

    首先我们要明白什么是请求转发,一般来说前端向后端请求数据,需要后端给前端一个链接,前端直接请求连接上的数据,请求转...

  • Node Express 转发 GET 请求

    转发GET 和 POST 请求到第三方的 API,实现方式如下:

  • nginx跨域

    实现原理类似于 Node 中间件代理,需要你搭建一个中转 nginx 服务器,用于转发请求。 使用 nginx 反...

  • 请求转发与重定向

    请求转发 指将请求再转发到其他地址,转发过程中使用的是同一个request请求,转发后浏览器地址栏内容不变。请求转...

  • node面试题(一)

    一、node请求的原理? node.js使用的是单线程模型,对所有I/O都采用异步的请求方式。node.js在执行...

  • Nodejs学习第三天

    在Nodejs学习第二天,我学习了如何将不同的请求比较有效正确的转发路由,使用了Node内置模块url 和http...

  • 微服务系统架构系列4——服务发现java

    前面我们讲了node.js来做网关,把前端的请求进行转发。但实际上,请求一个统一的地址,然后由服务器进行转发这种模...

  • 使用node-http-proxy POST,PUT请求报‘so

    问题 使用代理node-http-proxy代理,然而get请求正常,而到了POST请求和PUT请求则代理超时,甚...

网友评论

    本文标题:使用node转发请求

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