如何在 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'],
});
按照文档 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'],
});