1

遵循此处的文档,可以轻松启用用于 HTTP REST 应用程序的 NestJS URI 版本控制。

然而,文档没有解释如何使 URI 版本控制成为可选。

例子:

/api/v1/users

/api/v2/users

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

问题:

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

4

2 回答 2

2

您应该使用以下选项的VERSION_NEUTRAL版本defaultVersion

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

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

于 2022-01-17T11:48:48.830 回答
0

更新:

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

原答案:

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

main.ts

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

在 v1 控制器中:

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

于 2022-01-17T11:01:31.053 回答