Fastify:避免在每个路由中编写样板处理程序
Fastify: avoiding writing boiler plate handler in every routes
在 Fastify 中是否有可能避免总是编写类似的处理程序?
我的处理程序看起来像(一种代理):
handler: async (request, reply) => {
reply.from(proxyMap[request.url]);
return reply;
}
其中 proxyMap
只是我的代理路由到 target/upstream 路由路径的映射。然而处理程序总是相同的。
说个例子proxyMap
内容可以是:
const proxyMap = {
"/api/path1/proxy1" : "/api/backend/api1",
"/api/path2/proxy2" : "/api/backend/api2",
....
};
我怎样才能移动到某个常见的处理程序(比如在某个生命周期挂钩或某个适当的地方),这样我就不需要编写每条路由。像我写路由的时候,会根据proxyMap查找执行
在 fastify 中有没有办法实现这一点?
您可以通过一些编码使其自动化:
async function handler(request, reply) {
reply.from(proxyMap[request.url])
return reply
}
const proxyMap = {
'/api/path1/proxy1': '/api/backend/api1',
'/api/path2/proxy2': '/api/backend/api2',
}
Object.keys(proxyMap).forEach((url) => {
fastify.get(url, { handler })
})
在 Fastify 中是否有可能避免总是编写类似的处理程序?
我的处理程序看起来像(一种代理):
handler: async (request, reply) => {
reply.from(proxyMap[request.url]);
return reply;
}
其中 proxyMap
只是我的代理路由到 target/upstream 路由路径的映射。然而处理程序总是相同的。
说个例子proxyMap
内容可以是:
const proxyMap = {
"/api/path1/proxy1" : "/api/backend/api1",
"/api/path2/proxy2" : "/api/backend/api2",
....
};
我怎样才能移动到某个常见的处理程序(比如在某个生命周期挂钩或某个适当的地方),这样我就不需要编写每条路由。像我写路由的时候,会根据proxyMap查找执行
在 fastify 中有没有办法实现这一点?
您可以通过一些编码使其自动化:
async function handler(request, reply) {
reply.from(proxyMap[request.url])
return reply
}
const proxyMap = {
'/api/path1/proxy1': '/api/backend/api1',
'/api/path2/proxy2': '/api/backend/api2',
}
Object.keys(proxyMap).forEach((url) => {
fastify.get(url, { handler })
})