使用中间件为 JSON Server 中的所有请求添加前缀

Posted

技术标签:

【中文标题】使用中间件为 JSON Server 中的所有请求添加前缀【英文标题】:Prefix all requests in JSON Server with middleware 【发布时间】:2018-09-08 14:40:23 【问题描述】:

我正在使用来自https://github.com/typicode/json-server 的 JSON 服务器包 (json-server)。我想让服务器为所有请求添加前缀/api/v2。文档甚至给出了如何使用以下内容的示例:

server.use('/api', router)

但是我不想设置自己的服务器实例,而是在运行 json-server 时扩展默认值。

我可以在中间件中以某种方式使用上述语句吗?

【问题讨论】:

【参考方案1】:

因为json-server返回给你的路由器一个Express router。

首先在自己的路由文件中定义你所有的/v1/v2等,如下所示:

// api-routes.js
const express = require('express')
const jsonServer = require('json-server')

const router = express.Router()
const server = jsonServer.create()
const middlewares = jsonServer.defaults()
const v1Router = jsonServer.router('db-v1.json')
const v2Router = jsonServer.router('db-v2.json')


router.use('/v1', v1Router)
router.use('/v2', v2Router)

module.exports = router

然后将您的 API 路由器安装到 /api 上,如下所示:

const express = require('express')
const apiRoutes = require('./api-routes')

const app = express()
app.use('/api', apiRoutes)

// ...

现在应该有/api/v1/api/v2。上面未经测试的代码,但应该知道你需要做什么。

【讨论】:

以上是关于使用中间件为 JSON Server 中的所有请求添加前缀的主要内容,如果未能解决你的问题,请参考以下文章

如何在我的所有请求查询字符串中包含 JSON webtoken

json-server的POST请求返回固定值

超时错误:Pandas 中的 JSON 请求

使用 JWT 对 json-server 进行授权

Node.js express.json 中间件未按预期解析请求

json-server - 使用嵌套请求