Skip to content

Commit 07e17a4

Browse files
committed
fix(core,platform-express): when version is an array with neutral
on header and media type versioning, on the express adapter
1 parent 73f45db commit 07e17a4

2 files changed

Lines changed: 36 additions & 8 deletions

File tree

packages/core/router/router-explorer.ts

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -338,8 +338,7 @@ export class RouterExplorer {
338338
return router.applyVersionFilter(handler, version, versioningOptions);
339339
}
340340
/**
341-
* This can be removed in the next major release.
342-
* Left for backward-compatibility.
341+
* TODO(v9): This was left for backward-compatibility and can be removed.
343342
*/
344343
return <TRequest extends Record<string, any> = any, TResponse = any>(
345344
req: TRequest,
@@ -403,9 +402,16 @@ export class RouterExplorer {
403402

404403
const acceptHeaderVersionParameter = acceptHeaderValue
405404
? acceptHeaderValue.split(';')[1]
406-
: '';
405+
: undefined;
407406

408-
if (acceptHeaderVersionParameter) {
407+
// No version was supplied
408+
if (isUndefined(acceptHeaderVersionParameter)) {
409+
if (Array.isArray(version)) {
410+
if (version.includes(VERSION_NEUTRAL)) {
411+
return handler(req, res, next);
412+
}
413+
}
414+
} else {
409415
const headerVersion = acceptHeaderVersionParameter.split(
410416
versioningOptions.key,
411417
)[1];
@@ -427,7 +433,14 @@ export class RouterExplorer {
427433
req.headers?.[versioningOptions.header] ||
428434
req.headers?.[versioningOptions.header.toLowerCase()];
429435

430-
if (customHeaderVersionParameter) {
436+
// No version was supplied
437+
if (isUndefined(customHeaderVersionParameter)) {
438+
if (Array.isArray(version)) {
439+
if (version.includes(VERSION_NEUTRAL)) {
440+
return handler(req, res, next);
441+
}
442+
}
443+
} else {
431444
if (Array.isArray(version)) {
432445
if (version.includes(customHeaderVersionParameter)) {
433446
return handler(req, res, next);

packages/platform-express/adapters/express-adapter.ts

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import {
1919
isNil,
2020
isObject,
2121
isString,
22+
isUndefined,
2223
} from '@nestjs/common/utils/shared.utils';
2324
import { AbstractHttpAdapter } from '@nestjs/core/adapters/http-adapter';
2425
import { RouterMethodFactory } from '@nestjs/core/helpers/router-method-factory';
@@ -256,9 +257,16 @@ export class ExpressAdapter extends AbstractHttpAdapter {
256257

257258
const acceptHeaderVersionParameter = acceptHeaderValue
258259
? acceptHeaderValue.split(';')[1]
259-
: '';
260+
: undefined;
260261

261-
if (acceptHeaderVersionParameter) {
262+
// No version was supplied
263+
if (isUndefined(acceptHeaderVersionParameter)) {
264+
if (Array.isArray(version)) {
265+
if (version.includes(VERSION_NEUTRAL)) {
266+
return handler(req, res, next);
267+
}
268+
}
269+
} else {
262270
const headerVersion = acceptHeaderVersionParameter.split(
263271
versioningOptions.key,
264272
)[1];
@@ -280,7 +288,14 @@ export class ExpressAdapter extends AbstractHttpAdapter {
280288
req.headers?.[versioningOptions.header] ||
281289
req.headers?.[versioningOptions.header.toLowerCase()];
282290

283-
if (customHeaderVersionParameter) {
291+
// No version was supplied
292+
if (isUndefined(customHeaderVersionParameter)) {
293+
if (Array.isArray(version)) {
294+
if (version.includes(VERSION_NEUTRAL)) {
295+
return handler(req, res, next);
296+
}
297+
}
298+
} else {
284299
if (Array.isArray(version)) {
285300
if (version.includes(customHeaderVersionParameter)) {
286301
return handler(req, res, next);

0 commit comments

Comments
 (0)