【问题标题】:Any idea how i can versioning my graphql API?知道如何对我的 graphql API 进行版本控制吗?
【发布时间】:2022-04-15 18:16:58
【问题描述】:

在 rest API 中,我们可以像这样对 API 进行版本控制:

example.com/api/v1/

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

谢谢。

【问题讨论】:

    标签: laravel-lighthouse


    【解决方案1】:

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

    长版最好用GraphQL site解释:

    虽然没有什么可以阻止 GraphQL 服务像任何其他 REST API 一样进行版本控制,但 GraphQL 强烈主张通过提供用于持续发展 GraphQL 架构的工具来避免版本控制。

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

    相比之下,GraphQL 仅返回明确请求的数据,因此可以通过新类型和这些类型上的新字段添加新功能,而不会造成重大更改。这导致了一种常见的做法,即始终避免中断更改并提供无版本 API。

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

    【讨论】:

      【解决方案2】:

      你可以这样做

      services.AddGraphQLServer("v1").AddQueryType<QueryV1>();
      services.AddGraphQLServer("v2").AddQueryType<QueryV2>();
                      
      
       app.UseEndpoints(e =>
                  {   
                      e.MapGraphQL("/graphql/v1","v1");
                      e.MapGraphQL("/graphql/v2","v2");
                   
                  });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-03-22
        • 2011-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-07
        • 2016-03-08
        • 2017-06-28
        相关资源
        最近更新 更多