我需要動態分配一條新路線,但由于某種原因它拒絕作業。當我在郵遞員中發送請求時,它只是一直在等待回應
我正在做的事情的全貌如下:
我在其中一個方法上有一個帶有裝飾器的控制器
@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。所以,我想通過那個裝飾器來解決這個問題
uj5u.com熱心網友回復:
為了完成回應,必須有一個res.end()或res.json(...)類似的。但是我在您的代碼中的任何地方都看不到這一點。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/419743.html
標籤:
