【发布时间】:2022-02-11 12:33:21
【问题描述】:
一个有点幼稚的问题,但现在我想创建一个更灵活的 Web api 我刚刚阅读了有关 gqphql 的内容,接受查询字符串并返回包含结果的字符串是一种好习惯
任何使用 web api 和 graphql 的示例,我知道我可以使用 jws 之类的东西来保护查询,但我正在谈论这个想法和最佳实践
【问题讨论】:
标签: c# asp.net-web-api graphql
一个有点幼稚的问题,但现在我想创建一个更灵活的 Web api 我刚刚阅读了有关 gqphql 的内容,接受查询字符串并返回包含结果的字符串是一种好习惯
任何使用 web api 和 graphql 的示例,我知道我可以使用 jws 之类的东西来保护查询,但我正在谈论这个想法和最佳实践
【问题讨论】:
标签: c# asp.net-web-api graphql
我是 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
希望对您有所帮助。
【讨论】:
我自己没有尝试过,但据我阅读,很多用户都使用过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://127.0.0.1:5000/playground
尝试如下查询以开始:
{
human(id:1000) {
name,
appearsIn,
friends {
name,
appearsIn
}
}
}
【讨论】:
我可以像 Ogglas 之前所说的那样突出显示 https://github.com/graphql-dotnet/graphql-dotnet。 顺便说一句,许多贡献者正在努力开发该库,我个人在最近发布的实际项目中使用它。性能或内存舔没有问题,所以,绝对推荐。
此外,刚刚完成了基于 GraphQL.Net lib 的组件。它允许配置 GraphQL 模式,而无需在代码中开发东西(您可以在 json 文件中定义它)和非常简单快速的 db-adapter(可以连接到任何流行的数据库,例如 - MSSQL、MySQL、PostgreSQL 甚至弹性搜索)。
【讨论】:
我希望这会有所帮助: 看看我使用graphql-dotnet Nuget 包的 .Net Core 2.1 GraphQL Web API 小样本。 这是一个小例子,但它使用 EF Core 和节点父子关系来完成查询和突变。
谢谢
【讨论】:
我编写了一个“数据库到 GraphQL 生成器”,就像 Michael Ingmar Staib 建议的那样,它使用 HotChocolate 并内置了所有最佳实践! IT 为大型数据库节省了大量时间,而且您可以制作代表服务调用的模拟表。
在这里查看:https://github.com/MeaningOfLights/dB2GraphQL.Net
查看它生成的项目和它附带的演示数据库,这就是它的作用:
【讨论】: