如何在 nestjs REST 应用程序中使 URI 版本控制可选

How to make URI versioning optional in a nestjs REST application

按照文档 here.

可以轻松启用 HTTP REST 应用程序的 NestJS URI 版本控制

但是文档没有解释如何使 URI 版本控制成为可选的。

示例:

/api/v1/users

/api/v2/users

/api/users -> 应该映射到 v1 以允许现有的 webhooks 继续工作

问题:

我们如何在 NestJS REST 应用程序中使 URI 版本控制可选,以便旧版本(没有任何 api 版本)继续工作?

更新:

以下是一个 hack,导致 URI 版本控制的全局前缀不再有效,请使用已接受的答案。

原答案:

要使版本控制可选,请将版本控制前缀设置为空字符串(默认为 v)并显式设置包含前缀的版本控制字符串。

main.ts中:

app.enableVersioning({
    type: VersioningType.URI,
    defaultVersion: ['', 'v1', 'v2'],
    prefix: '',
});

在 v1 控制器中:

@Controller({ path: 'users', version: ['v1', ''] })

您应该在 defaultVersion 选项上使用 VERSION_NEUTRAL 版本,例如:

app.enableVersioning({
    type: VersioningType.URI,
    defaultVersion: [VERSION_NEUTRAL, '1', '2'],
});

https://docs.nestjs.com/techniques/versioning