next.js 如何配置接口代理 proxy

Posted FungLeo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了next.js 如何配置接口代理 proxy相关的知识,希望对你有一定的参考价值。

next.js 配置接口代理 proxy

最近有一个小项目,打算使用 next.js 框架来做。这是我第一次使用该框架,没有太多的经验。按照官方的方法,初始化好项目,然后就能跑起来了。

但是,我需要配置一下代理,用以请求数据,百度了一下,搞不起来,可能是因为资料版本比较老旧的原因。在 google 上搜索了一下,顺利解决了这个问题。因此撰文记录一下。

安装所需依赖

npm install express http-proxy-middleware -D

有 nodejs 基础的话,可以看到,这两个依赖是非常熟悉的,express 是常用的 web 服务框架。而 http-proxy-middleware 是代理中间件。

编写 server.js

在项目根目录下,创建 server.js 文件,并录入以下代码:

const express = require('express')
const next = require('next')
const  createProxyMiddleware  = require("http-proxy-middleware")

// 配置运行端口
const port = process.env.PORT || 3000
// 判断是否为开发环境
const dev = process.env.NODE_ENV !== 'production'
// 初始化 app
const app = next( dev )
const handle = app.getRequestHandler()

// 代理配置表,这里和一般的 webpack 配置是一样的。
const proxyTable = 
  '/api': 
    target: 'http://127.0.0.1:4000',
    pathRewrite: 
      '^/api': '/api'
    ,
    changeOrigin: true
  


app.prepare().then(() => 
  const server = express()

  // 如果是开发环境,则代理接口
  if (dev) 
    server.use('/api', createProxyMiddleware(proxyTable['/api']));
  

  // 托管所有请求
  server.all('*', (req, res) => 
    return handle(req, res)
  )

  server.listen(port, (err) => 
    if (err) throw err
    console.log(`> Ready on http://localhost:$port`)
  )
).catch(err => 
    console.log('Error:::::', err)
)

配置运行脚本

编辑 package.json, 将 script 部分内容,替换成以下:

  "scripts": 
    "dev": "node server.js",
    "build": "next build",
    "start": "NODE_ENV=production node server.js"
  ,

OK,到此为止,我们的代理就配置好了,然后我们运行 npm run dev 即可访问我们代理到的接口了。

接口服务不在本文讨论范围内。


通过命令行,我们可以请求到我们代理的接口了。接下来,我需要研究一下,如何在代码中请求接口,如果有值得记录的内容,我会继续编写博文的。

本文由 FungLeo 原创,允许转载,但转载必须保留首发链接。

以上是关于next.js 如何配置接口代理 proxy的主要内容,如果未能解决你的问题,请参考以下文章

next.js 如何配置接口代理 proxy

next.js 如何配置接口代理 proxy

Next.js 配置接口跨域代理转发

【proxy】Linux上各类代理设置

使用默认 Next.js 开发服务器代理到后端

nginx配置正向代理