知道如何对graphql API进行版本控制吗



在rest API中,我们可以将我们的APIS版本如下:

example.com/api/v1/

使用单个GraphQL端点的想法是什么?

谢谢。

简短的版本是:你没有:(

GraphQL站点可以很好地解释长版本:

虽然没有什么能像任何其他REST API一样阻止GraphQL服务的版本化,但GraphQL强烈认为,通过提供GraphQL模式持续演进的工具,可以避免版本化。

为什么大多数API版本?当对从API端点返回的数据的控制有限时,任何更改都可以被视为中断更改,而中断更改需要新版本。如果向API添加新功能需要新版本,那么在经常发布和拥有许多增量版本与API的可理解性和可维护性之间会出现权衡。

相比之下,GraphQL只返回显式请求的数据,因此可以通过新类型和这些类型上的新字段添加新功能,而无需创建中断更改。这导致了一种常见的做法,即总是避免破坏更改并提供无版本的API。

来源:https://graphql.org/learn/best-practices/#versioning

你可以这样做

services.AddGraphQLServer("v1").AddQueryType<QueryV1>();
services.AddGraphQLServer("v2").AddQueryType<QueryV2>();

app.UseEndpoints(e =>
{   
e.MapGraphQL("/graphql/v1","v1");
e.MapGraphQL("/graphql/v2","v2");

});

最新更新