【问题标题】:best practice using web api with graphql将 web api 与 graphql 一起使用的最佳实践
【发布时间】:2022-02-11 12:33:21
【问题描述】:

一个有点幼稚的问题,但现在我想创建一个更灵活的 Web api 我刚刚阅读了有关 gqphql 的内容,接受查询字符串并返回包含结果的字符串是一种好习惯

任何使用 web api 和 graphql 的示例,我知道我可以使用 jws 之类的东西来保护查询,但我正在谈论这个想法和最佳实践

【问题讨论】:

标签: c# asp.net-web-api graphql


【解决方案1】:

我是 Hot Chocolate 的贡献者。

为了让 GraphQL 与 Web API 并行运行,只需将以下包添加到您的项目中:

HotChocolate.AspNetCore

然后在您启动的ConfigureService 方法中添加以下内容:

public void ConfigureServices(IServiceCollection services)
{
    services.AddGraphQL(Schema.Create(c =>
    {
        c.RegisterQueryType<Query>();
    }));
}

在配置部分只需添加UseGraphQL

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }

    app.UseGraphQL();
}

GraphQL 只是另一个与您的 Web api 中间件并列的中间件。

如果您使用的是 .Net Framework 而不是 .Net Core,那么您必须使用

HotChocolate.AspNetClassic

我们在这里有一个 .Net Core 和 .Net Framework 的 StarWars 示例: https://github.com/ChilliCream/hotchocolate/tree/master/examples

您可以在此处找到文档: https://hotchocolate.io

希望对您有所帮助。

【讨论】:

    【解决方案2】:

    我自己没有尝试过,但据我阅读,很多用户都使用过graphql-dotnet。它还有一个很好的入门指南。

    http://graphql-dotnet.github.io/graphql-dotnet/getting-started

    https://github.com/graphql-dotnet/graphql-dotnet

    它基于 Facebook 的 graphql

    https://github.com/facebook/graphql

    要了解有关 graphql 及其含义的更多信息:

    http://graphql.org/learn/

    【讨论】:

    【解决方案3】:

    我认为最好的解决方案是热巧克力, 要创建功能示例,请使用以下命令:

    • dotnet new -i HotChocolate.Templates.StarWars
    • mkdir 星球大战
    • cd 星球大战
    • dotnet 新星球大战
    • dotnet run --project StarWars/StarWars.csproj -c 发布

    使用这个地址:http://127.0.0.1:5000/playground

    尝试如下查询以开始:

    { human(id:1000) { name, appearsIn, friends { name, appearsIn } } }

    【讨论】:

      【解决方案4】:

      我可以像 Ogglas 之前所说的那样突出显示 https://github.com/graphql-dotnet/graphql-dotnet。 顺便说一句,许多贡献者正在努力开发该库,我个人在最近发布的实际项目中使用它。性能或内存舔没有问题,所以,绝对推荐。

      此外,刚刚完成了基于 GraphQL.Net lib 的组件。它允许配置 GraphQL 模式,而无需在代码中开发东西(您可以在 json 文件中定义它)和非常简单快速的 db-adapter(可以连接到任何流行的数据库,例如 - MSSQL、MySQL、PostgreSQL 甚至弹性搜索)。

      【讨论】:

        【解决方案5】:

        我希望这会有所帮助: 看看我使用graphql-dotnet Nuget 包的 .Net Core 2.1 GraphQL Web API 小样本。 这是一个小例子,但它使用 EF Core 和节点父子关系来完成查询和突变。

        看看: SampleGraphQLWebApi

        谢谢

        【讨论】:

          【解决方案6】:

          我编写了一个“数据库到 GraphQL 生成器”,就像 Michael Ingmar Staib 建议的那样,它使用 HotChocolate 并内置了所有最佳实践! IT 为大型数据库节省了大量时间,而且您可以制作代表服务调用的模拟表。

          在这里查看:https://github.com/MeaningOfLights/dB2GraphQL.Net

          查看它生成的项目和它附带的演示数据库,这就是它的作用:

          db2GraphQL.Net

          【讨论】:

            猜你喜欢
            • 2011-06-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-04-19
            • 2020-03-21
            • 2015-11-12
            • 1970-01-01
            • 2022-06-22
            相关资源
            最近更新 更多