Skip to content

Commit 4953e7b

Browse files
author
sunlei
committed
fix: parse openApi path level parameters
1 parent bcefa6f commit 4953e7b

File tree

3 files changed

+23
-9
lines changed

3 files changed

+23
-9
lines changed

server/node-service/src/plugins/openApi/parse.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -254,10 +254,16 @@ export async function parseOpenApi(
254254
let params: ActionParamConfig[] = [];
255255

256256
if (main === 2) {
257-
params = parseSwagger2Operation(operation as OpenAPIV2.OperationObject);
257+
params = parseSwagger2Operation(
258+
operation as OpenAPIV2.OperationObject,
259+
pathSpec as OpenAPIV2.PathItemObject
260+
);
258261
}
259262
if (main === 3) {
260-
params = parseOas3Operation(operation as OpenAPIV3.OperationObject);
263+
params = parseOas3Operation(
264+
operation as OpenAPIV3.OperationObject,
265+
pathSpec as OpenAPIV3.PathItemObject
266+
);
261267
}
262268
const action: ActionConfig = {
263269
category: operation.tags || "",

server/node-service/src/plugins/openApi/parse/oas3.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,14 +61,18 @@ const schemaToActionParamConfig = (
6161
return param;
6262
};
6363

64-
export function parseOperation(operation?: OpenAPIV3.OperationObject): ActionParamConfig[] {
64+
export function parseOperation(
65+
operation?: OpenAPIV3.OperationObject,
66+
pathSpec?: OpenAPIV3.PathItemObject
67+
): ActionParamConfig[] {
6568
const params: ActionParamConfig[] = [];
66-
if (!operation) {
69+
if (!operation || !pathSpec) {
6770
return [];
6871
}
69-
const { parameters, requestBody } = operation;
72+
const { parameters: pathParameters = [] } = pathSpec;
73+
const { parameters = [], requestBody } = operation;
7074

71-
parameters?.forEach((i) => {
75+
pathParameters.concat(parameters).forEach((i) => {
7276
if (isRefObject(i)) {
7377
console.warn("unexpected ref parameters:", i);
7478
return;

server/node-service/src/plugins/openApi/parse/swagger2.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,14 @@ const openApiV2TypeMap: Record<string, ActionParamType> = {
3333
file: "file",
3434
};
3535

36-
export function parseOperation(operation: OpenAPIV2.OperationObject): ActionParamConfig[] {
36+
export function parseOperation(
37+
operation: OpenAPIV2.OperationObject,
38+
pathSpec: OpenAPIV2.PathItemObject
39+
): ActionParamConfig[] {
3740
const params: ActionParamConfig[] = [];
38-
39-
operation.parameters?.forEach((paramSpec) => {
41+
const pathParametersSpec = pathSpec.parameters || [];
42+
const operationParametersSpec = operation.parameters || [];
43+
pathParametersSpec.concat(operationParametersSpec).forEach((paramSpec) => {
4044
if (isRefObject(paramSpec)) {
4145
console.warn("unexpected ref parameters:", paramSpec);
4246
return;

0 commit comments

Comments
 (0)