如何迁移现有存储过程以使用 graphql

Sai*_*lan 4 graphql

我有一个遗留项目,它使用 700 多个复杂的存储过程来获取和修改数据。有没有一种方法可以使用 Graphql 创建 API 而不更改存储过程?

Hug*_*ugo 5

根据您使用的语言,可能存在支持存储过程的 GraphQL 库。如果没有,您可以自己编写。

您还可以编写一个薄 REST 层,并在其上分层 GraphQL。

编辑:如果您使用的是 ASP.NET Core,请查看此库并按照其文档介绍页面中的示例进行操作,除了将硬编码数据替换为您通常用于与 SQL Server 通信以获取的库中的调用之外。所需数据。我推荐Dapper(它实际上是由 Stack Overflow 的人编写的!),因为它可以让您编写轻量级查询conn.Query("[dbo].myFooProc @bar @baz", new { bar = quux, baz = 22 })(或使用您拥有的任何现有类)。

所以最终你的代码看起来像

public class FooBarQuery : ObjectGraphType
{
  public FooBarQuery()
  {

    var MyData  = conn.Query("[dbo].myFooBarProc @FooId", new { FooId = 2 }).ToList(); 
    Field<FooType>(
      resolve: context => MyData; 
    );
  }
}
Run Code Online (Sandbox Code Playgroud)