像 @Header 、 @Query 和 @Body 等等之所以能将请求的属性注入到控制器的方法参数上,全靠方法参数解释器。
定义
export interface MethodArgsResolver {readonly priority: number;resolve(metadata: any, args: any[]): Promise<void>;}
实现
@Component(MethodArgsResolver)export class QueryMethodArgsResolver implements MethodArgsResolver {readonly priority = 400;async resolve(metadata: any, args: any[]): Promise<void> {const query: any = Context.getCurrent().request.query;const queryMetadatas = <QueryMetadata[]>metadata.queryMetadata;if (queryMetadatas && query !== undefined) {for (const m of queryMetadatas) {args[m.parameterIndex] = m.name ? query[m.name] : query;}}}}
