使用中间件为 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