From ffda8983696d201ddae526455bfc758b1ed194a9 Mon Sep 17 00:00:00 2001 From: Juneidy Date: Fri, 15 Jan 2021 15:43:35 +0800 Subject: [PATCH] improve: added parameter definition to route openapi --- src/framework/types.ts | 1 + src/middlewares/openapi.metadata.ts | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/src/framework/types.ts b/src/framework/types.ts index 994b70ca..688f2cf3 100644 --- a/src/framework/types.ts +++ b/src/framework/types.ts @@ -433,6 +433,7 @@ export interface OpenApiRequestMetadata { openApiRoute: string; pathParams: { [index: string]: string }; schema: OpenAPIV3.OperationObject; + parameters: Array; } export interface OpenApiRequest extends Request { diff --git a/src/middlewares/openapi.metadata.ts b/src/middlewares/openapi.metadata.ts index 67817cd2..6709c82d 100644 --- a/src/middlewares/openapi.metadata.ts +++ b/src/middlewares/openapi.metadata.ts @@ -24,11 +24,23 @@ export function applyOpenApiMetadata( const matched = lookupRoute(req); if (matched) { const { expressRoute, openApiRoute, pathParams, schema } = matched; + const parameters = []; + for (const param of schema?.parameters || []) { + if (param.$ref) { + const p = param.$ref.replace('#/components/parameters/', ''); + parameters.push( + openApiContext.apiDoc.components.parameters[p] + ); + } else { + parameters.push(param); + } + } req.openapi = { expressRoute: expressRoute, openApiRoute: openApiRoute, pathParams: pathParams, schema: schema, + parameters: parameters, }; req.params = pathParams; if (responseApiDoc) {