遵循此处的文档,可以轻松启用用于 HTTP REST 应用程序的 NestJS URI 版本控制。
然而,文档没有解释如何使 URI 版本控制成为可选。
例子:
/api/v1/users
/api/v2/users
/api/users
-> 应该映射到 v1 以允许现有的 webhook 继续工作
问题:
我们如何在 NestJS REST 应用程序中使 URI 版本控制成为可选,以便旧版本(没有任何 api 版本)继续工作?
遵循此处的文档,可以轻松启用用于 HTTP REST 应用程序的 NestJS URI 版本控制。
然而,文档没有解释如何使 URI 版本控制成为可选。
例子:
/api/v1/users
/api/v2/users
/api/users
-> 应该映射到 v1 以允许现有的 webhook 继续工作
问题:
我们如何在 NestJS REST 应用程序中使 URI 版本控制成为可选,以便旧版本(没有任何 api 版本)继续工作?
您应该使用以下选项的VERSION_NEUTRAL
版本defaultVersion
:
app.enableVersioning({
type: VersioningType.URI,
defaultVersion: [VERSION_NEUTRAL, '1', '2'],
});
更新:
以下是一个 hack,导致 URI 版本控制的全局前缀不再起作用,请使用接受的答案。
原答案:
要使版本控制成为可选,请将版本控制前缀设置为空字符串(默认为v
)并显式设置包含前缀的版本控制字符串。
在main.ts
:
app.enableVersioning({
type: VersioningType.URI,
defaultVersion: ['', 'v1', 'v2'],
prefix: '',
});
在 v1 控制器中:
@Controller({ path: 'users', version: ['v1', ''] })