前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >next.js 如何配置接口代理 proxy

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

作者头像
FungLeo
发布2021-12-07 20:12:08
发布2021-12-07 20:12:08
4.8K00
代码可运行
举报
运行总次数:0
代码可运行

next.js 配置接口代理 proxy

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

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

安装所需依赖

代码语言:javascript
代码运行次数:0
运行
复制
npm install express http-proxy-middleware -D

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

编写 server.js

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

代码语言:javascript
代码运行次数:0
运行
复制
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 部分内容,替换成以下:

代码语言:javascript
代码运行次数:0
运行
复制
  "scripts": {
    "dev": "node server.js",
    "build": "next build",
    "start": "NODE_ENV=production node server.js"
  },

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

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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/08/04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • next.js 配置接口代理 proxy
    • 安装所需依赖
    • 编写 server.js
    • 配置运行脚本
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档