问题标签 [graphql.net]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
919 浏览

c# - 如何使用 GraphQL.Net 和 c# 将集合传递给 GraphQL 突变?

我正在尝试构建一个接受集合的突变。GraphQL 服务器是用 c# .net core 编写的,并使用 GraphQL.Net。

这是我的输入类型;

使用 GraphiQL 我尝试发布以下突变;

具有以下变量;

我得到的回应是;

如果PupilReportInputTypePupilMetricCollections删除该字段并且对变异变量进行了类似调整,则查询的行为与预期相同(不是错误)。同样,如果我修改变量输入并且PupilReportInputType使该字段只是PupilMetricCollectionInputType而不是ListGraphType<PupilMetricCollectionInputType>那么我就可以让它全部工作。

我如何传递收藏PupilMetricCollectionInputType?我需要某种 ListGraphInputType 吗?

0 投票
1 回答
1359 浏览

c# - GraphQL ASP.NET Core Web API 控制器的自省问题

我看不到我的 GraphQL Graph 的架构。当我使用 Web API GraphQL 控制器作为端点时,内省不起作用。

我目前已尝试使用 GraphiQl 和 UI.Playground 库

我希望看到使用 GraphQL.NET 库提供的自省的模式和类型,但不幸的是我没有。我目前正在使用 Insomnia Client 来获取架构,但 GraphiQL 和 GraphQL.Server.Ui.Playground 无法完成这项工作。
我正在使用 Joe McBride 的 GraphQL.NET 2.4.0

在哪里

和永无止境的加载图像 在此处输入图像描述

0 投票
0 回答
164 浏览

graphql - graphql 突变的最佳实践是什么?(.NET 实现)

我目前正在学习 graphql,我不确定我是否正确理解了突变应该如何工作,尤其是与订阅结合使用时。

我有一个包含客户详细信息的页面,其中包括他从我们公司购买的软件产品的描述和列表。在界面中,有一个用于描述的编辑按钮,一个用于将新软件产品添加到客户端列表的加号按钮以及用于每个产品的减号按钮以启用删除它们。
我目前添加了一个突变,它以客户端的 id 和一个字符串 (newDescription) 作为参数并更新客户端的描述。这是正确的还是我应该拥有 id 和 ClientInputType (包含字段描述)并将它们作为参数传递?更重要的是,如果我使用 ClientInputType 并且它包含软件产品的描述和列表,有没有一种方法可以一次只更新一个字段(为了使用相同的突变更新客户端,但只更改必填字段取决于在界面中按下了哪个按钮)?

public Mutation(IClientRepository clientRepository) { this.FieldAsync<ClientType>( "updateClient", arguments: new QueryArguments( new QueryArgument<NonNullGraphType<IntGraphType>> { Name = "id" }, new QueryArgument<StringGraphType> { Name = "newDescription" } ), resolve: async ctx => {...} }

换句话说,我可以让 graphql 以任何方式知道我只想更新 ClientInputType 中的一个字段并且它应该忽略其他字段吗?突变应该返回什么?我正在返回更新的客户端。

0 投票
1 回答
60 浏览

graphql - GraphQL.NET 错误消息没有意义

我有一个成功支持查询的 GraphQL 模式设置。但是,在尝试突变时,我收到以下奇怪的错误: Error "message": "GraphQL.Validation.ValidationError: Cannot query field \"id\" on type \"IdeaInput\". Did you mean \"id\"?"

这是突变的输入类型:

和数据:

在此处输入图像描述

其他字段返回此错误。我什至尝试过明确命名这些字段,但错误仍然存​​在。当预期名称和接收到的名称表面上相同时,什么可能导致此失败?

0 投票
1 回答
212 浏览

c# - 无法从根提供程序解析“GraphQL.Resolvers.ICountriesResolver”,因为它需要范围服务“Query.Persistence.SampleDbContext”

我正在使用 ASP.NET Core 2.2、GraphQL.NET、CosmosDB、EntityFrameworkCore (Microsoft.EntityFrameworkCore.Cosmos(2.2.4) 进行 API 开发项目。

在运行解决方案时,我看到一个错误:

无法从根提供程序解析“GraphQL.Resolvers.ICountriesResolver”,因为它需要范围服务“Query.Persistence.SampleDbContext”。

这是我的代码详细信息:

启动.cs

CountryResolver.cs

CountryService.cs

GraphQLQuery.cs

谁能帮我解决这个问题?

0 投票
2 回答
5092 浏览

c# - System.Net.WebException:远程服务器返回错误:(429)请求太多

我正在使用 ASP.NET Core 2.2、GraphQL.NET、CosmosDB、EntityFrameworkCore (Microsoft.EntityFrameworkCore.Cosmos(2.2.4) 进行 API 开发项目。

在运行解决方案时,我在 VS2019 的输出窗口中看到一个错误:

启动.cs

谁能帮我解决这个问题?

0 投票
2 回答
3953 浏览

c# - 使用“CosmosExecutionStrategy”执行数据库操作时超出最大重试次数 (6)

我正在使用 ASP.NET Core 2.2、GraphQL.NET、CosmosDB、Entity Framework Core (Microsoft.EntityFrameworkCore.Cosmos v2.2.4) 进行 API 开发项目。

在测试从 AzureComosDB 提取数据的 API 方法时,有时我会收到此错误:

Microsoft.EntityFrameworkCore.Storage.RetryLimitExceededException:“使用“CosmosExecutionStrategy”执行数据库操作时超出了最大重试次数 (6)。有关最近的失败,请参阅内部异常。

我不确定为什么会间歇性地弹出此错误。

任何人都可以通过提供一些指导来解决这个问题来帮助我吗?

0 投票
1 回答
1450 浏览

c# - asp.net core 2.2中的响应压缩不起作用

我正在使用 asp.net core 2.2、Microsoft.EntityFrameworkCore(2.2.4)、Microsoft.EntityFrameworkCore.Cosmos(2.2.4)、GraphQL.NET 来开发基于 graphql 的 API。

基于链接:https ://docs.microsoft.com/en-us/aspnet/core/performance/response-compression?view=aspnetcore-3.0

我在 Startup.cs 类方法中配置了设置以启用压缩。

这是我的代码:

启动.cs

代码构建良好,在使用 Postman 验证它时,我传递了以下标题:

Accept-Encoding:br Content-Type:application/json Accept-Language:en-us

根据上面提到的 MSDN 文档,服务器应该发送标头 Content-Encoding:br 和 Vary:Accept-Encoding。

谁能帮我解决这个问题?

0 投票
1 回答
718 浏览

c# - GraphQL.NET 动态字段类型

我正在尝试将一个对象添加到我的 GraphQL.NET 模型中,但其中一个字段有问题。原来的类是

这需要一个物化路径(如Person.Address.ZipCode),并将其与MatchValue. 问题是,MatchValue可能有很多不同的东西:布尔值、整数、字符串、列表/数组、日期时间等。

我的第一次尝试是创建 GraphQL 类,如下所示:

但它给出了以下错误:

如果我将其设置为 a StringGraphType,它将正确转换一些值(例如,布尔真变为“真”),但我真的不喜欢这种解决方案,因为它需要在客户端进行特殊处理。我还没有探索所有可能的类型以查看数组或 DateTime 会发生什么。

有什么方法可以在 GraphQL.NET 中做到这一点?

(在搜索中,我发现了几个处理类型参数的资源,但这对我正在做的事情并没有真正的帮助,因为我使用通用对象并在运行时使用反射来确定如何处理特定值。我还发现这个悬而未决的问题非常相似......但遗憾的是没有答案。)

0 投票
1 回答
918 浏览

aspnetboilerplate - 当多个程序集中的 GraphQL ObjectGraphTypes 时,依赖注入将不起作用

我在几个项目中定义了几个 GraphQL ObjectGraphType 和查询。所有这些项目都依赖于 asp.net 样板 GraphQL 项目。当我尝试调用任何 graphQL 查询时,它返回错误“Castle.MicroKernel.ComponentNotFoundException:“未找到支持该服务的组件” 。

异常堆栈跟踪

当所有这些查询和 ObjectGraphType 都在 1 个项目中时,它可以工作,该项目是 asp.net 样板 GraphQL 项目。

为了允许在多个项目中使用 GraphQL ObjectGraphType 和查询,而不是将所有都放在 asp.net 样板 GraphQL 项目中,我进行了以下更改:

  1. 我创建了一个新的 QueryContainer (ExtQueryContainer.cs) 来扩展原来的 QueryContainer.cs
  2. 我通过从类中删除sealed 关键字来修改原始QueryContainer,以便允许新创建的QueryContainer 继承原始QueryContainer。
  3. 我创建了一个新的 GraphQL 架构 (GraphQLSchema.cs),它引用了新创建的 ExtQueryContainer

ServiceCollectionExtensions.cs(在 asp.net 样板 GraphQL 项目中)

ExtQueryContainer.cs

GraphQLSchema.cs