动态分配路线 Node/Express

Assign route dynamically Node/Express

我需要动态分配一条新路线,但由于某种原因它无法工作。 当我在 Postman 中发送请求时,它一直在等待响应

我正在做的事情的全貌如下:

我有一个控制器,其中一个方法带有装饰器

@Controller()
export class Test {


    @RESTful({
        endpoint: '/product/test',
        method: 'post',
    })
    async testMe() {

        return {
            type: 'hi'
        }
        
    }


}
export function RESTful({ endpoint, method, version }: { endpoint: string, version?: string, method: HTTPMethodTypes }) {

    return function (target: any, propertyKey: string, descriptor: PropertyDescriptor): void {
        const originalMethod = descriptor.value

        Reflect.defineMetadata(propertyKey, {
            endpoint,
            method,
            propertyKey,
            version
        }, target)

        return originalMethod
    }
}

export function Controller() {

    return function (constructor: any) {
        const methods = Object.getOwnPropertyNames(constructor.prototype)
        Container.set(constructor)

        for (let action of methods) {

            const route: RESTfulRoute = Reflect.getMetadata(action, constructor.prototype)

            if (route) {

                const version: string = route.version ? `/${route.version}` : '/v1'

                Container.get(Express).injectRoute((instance: Application) => {
                    instance[route.method](`/api${version}${route.endpoint}`, async () => {
                        return await Reflect.getOwnPropertyDescriptor(constructor, route.propertyKey)
                        // return await constructor.prototype[route.propertyKey](req, res)
                    })
                })
            }
        }
    }
}

是否可以在途中动态设置路由? 我主要使用 GraphQL,但有时我也需要 RESTful API。所以,我想通过那个装饰器来解决这个问题

为了完成响应,必须有 res.end() or res.json(...) 或类似的。但是我在你的代码中的任何地方都看不到。