使用GraphQL的Web API最佳实践

6

这是一个有点天真的问题,但现在我想创建一个Web API以更加灵活。我刚刚了解到gqphql,接受查询字符串并返回包含结果的字符串是一种好的做法吗?

有没有使用Web API和GraphQL的示例?我知道可以使用类似JWS的东西保护查询,但我说的是最佳实践和想法。


请查看 https://github.com/ckimes89/graphql-net。 - epitka
6个回答

5
我是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 希望这能帮到你。

1
我认为最好的解决方案是HotChocolate, 使用以下命令创建一个功能性示例:
  • dotnet new -i HotChocolate.Templates.StarWars
  • mkdir starwars
  • cd starwars
  • dotnet new starwars
  • dotnet run --project StarWars/StarWars.csproj -c release
请使用此地址:http://127.0.0.1:5000/playground 尝试像下面这样的查询开始: { human(id:1000) { name, appearsIn, friends { name, appearsIn } } }

1

这是一篇关于如何在ASP.NET Core Web API中使用graphql-dotnet的最新指南:https://fullstackmark.com/post/17/building-a-graphql-api-with-aspnet-core-2-and-entity-framework-core - mmacneil007

0
我编写了一个“数据库到GraphQL生成器”,像Michael Ingmar Staib建议的那样使用HotChocolate,并内置所有最佳实践!对于大型数据库,它可以节省大量时间,并且您可以制作代表服务调用的模拟表。
在这里查看:https://github.com/MeaningOfLights/dB2GraphQL.Net 查看它所生成的项目和演示数据库,这就是它的功能:

db2GraphQL.Net enter image description here


0

正如Ogglas之前所说,我可以将https://github.com/graphql-dotnet/graphql-dotnet作为重点突出。此外,很多贡献者正在努力开发该库,我个人在最近发布的实际项目中使用过它。性能或内存泄漏都没有问题,因此绝对推荐。

此外,刚刚完成了基于GraphQL.Net库的组件。它允许配置GraphQL模式而无需在代码中进行开发(您可以在json文件中定义),并且具有非常简单和快速的db适配器(可以连接到任何流行的数据库,例如MSSQL,MySQL,PostgreSQL甚至ElasticSearch)。


0
我希望这可以帮到你: 请查看我的小例子,使用 graphql-dotnet Nuget 包,展示了 .Net Core 2.1 GraphQL Web API。 这是一个小的例子,但它使用了 EF Core 和父子节点关系来完成查询和变更。
请看一下: SampleGraphQLWebApi 谢谢。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接