【发布时间】:2022-04-15 18:16:58
【问题描述】:
在 rest API 中,我们可以像这样对 API 进行版本控制:
example.com/api/v1/
使用单个 GraphQL 端点的想法是什么?
谢谢。
【问题讨论】:
在 rest API 中,我们可以像这样对 API 进行版本控制:
example.com/api/v1/
使用单个 GraphQL 端点的想法是什么?
谢谢。
【问题讨论】:
简短的版本是:你没有:)
长版最好用GraphQL site解释:
虽然没有什么可以阻止 GraphQL 服务像任何其他 REST API 一样进行版本控制,但 GraphQL 强烈主张通过提供用于持续发展 GraphQL 架构的工具来避免版本控制。
为什么大多数 API 都有版本?当对从 API 端点返回的数据的控制有限时,任何更改都可以被视为重大更改,并且重大更改需要新版本。如果向 API 添加新功能需要新版本,则需要在经常发布和拥有许多增量版本与 API 的可理解性和可维护性之间进行权衡。
相比之下,GraphQL 仅返回明确请求的数据,因此可以通过新类型和这些类型上的新字段添加新功能,而不会造成重大更改。这导致了一种常见的做法,即始终避免中断更改并提供无版本 API。
【讨论】:
你可以这样做
services.AddGraphQLServer("v1").AddQueryType<QueryV1>();
services.AddGraphQLServer("v2").AddQueryType<QueryV2>();
app.UseEndpoints(e =>
{
e.MapGraphQL("/graphql/v1","v1");
e.MapGraphQL("/graphql/v2","v2");
});
【讨论】: