问题标签 [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.
c# - 如何使用 GraphQL.Net 和 c# 将集合传递给 GraphQL 突变?
我正在尝试构建一个接受集合的突变。GraphQL 服务器是用 c# .net core 编写的,并使用 GraphQL.Net。
这是我的输入类型;
使用 GraphiQL 我尝试发布以下突变;
具有以下变量;
我得到的回应是;
如果PupilReportInputType
已PupilMetricCollections
删除该字段并且对变异变量进行了类似调整,则查询的行为与预期相同(不是错误)。同样,如果我修改变量输入并且PupilReportInputType
使该字段只是PupilMetricCollectionInputType
而不是ListGraphType<PupilMetricCollectionInputType>
那么我就可以让它全部工作。
我如何传递收藏PupilMetricCollectionInputType
?我需要某种 ListGraphInputType 吗?
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 中的一个字段并且它应该忽略其他字段吗?突变应该返回什么?我正在返回更新的客户端。
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
谁能帮我解决这个问题?
c# - System.Net.WebException:远程服务器返回错误:(429)请求太多
我正在使用 ASP.NET Core 2.2、GraphQL.NET、CosmosDB、EntityFrameworkCore (Microsoft.EntityFrameworkCore.Cosmos(2.2.4) 进行 API 开发项目。
在运行解决方案时,我在 VS2019 的输出窗口中看到一个错误:
启动.cs
谁能帮我解决这个问题?
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)。有关最近的失败,请参阅内部异常。
我不确定为什么会间歇性地弹出此错误。
任何人都可以通过提供一些指导来解决这个问题来帮助我吗?
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。
谁能帮我解决这个问题?
c# - GraphQL.NET 动态字段类型
我正在尝试将一个对象添加到我的 GraphQL.NET 模型中,但其中一个字段有问题。原来的类是
这需要一个物化路径(如Person.Address.ZipCode
),并将其与MatchValue
. 问题是,MatchValue
可能有很多不同的东西:布尔值、整数、字符串、列表/数组、日期时间等。
我的第一次尝试是创建 GraphQL 类,如下所示:
但它给出了以下错误:
如果我将其设置为 a StringGraphType
,它将正确转换一些值(例如,布尔真变为“真”),但我真的不喜欢这种解决方案,因为它需要在客户端进行特殊处理。我还没有探索所有可能的类型以查看数组或 DateTime 会发生什么。
有什么方法可以在 GraphQL.NET 中做到这一点?
(在搜索中,我发现了几个处理类型参数的资源,但这对我正在做的事情并没有真正的帮助,因为我使用通用对象并在运行时使用反射来确定如何处理特定值。我还发现这个悬而未决的问题非常相似......但遗憾的是没有答案。)
aspnetboilerplate - 当多个程序集中的 GraphQL ObjectGraphTypes 时,依赖注入将不起作用
我在几个项目中定义了几个 GraphQL ObjectGraphType 和查询。所有这些项目都依赖于 asp.net 样板 GraphQL 项目。当我尝试调用任何 graphQL 查询时,它返回错误“Castle.MicroKernel.ComponentNotFoundException:“未找到支持该服务的组件” 。
异常堆栈跟踪
当所有这些查询和 ObjectGraphType 都在 1 个项目中时,它可以工作,该项目是 asp.net 样板 GraphQL 项目。
为了允许在多个项目中使用 GraphQL ObjectGraphType 和查询,而不是将所有都放在 asp.net 样板 GraphQL 项目中,我进行了以下更改:
- 我创建了一个新的 QueryContainer (ExtQueryContainer.cs) 来扩展原来的 QueryContainer.cs
- 我通过从类中删除sealed 关键字来修改原始QueryContainer,以便允许新创建的QueryContainer 继承原始QueryContainer。
- 我创建了一个新的 GraphQL 架构 (GraphQLSchema.cs),它引用了新创建的 ExtQueryContainer
ServiceCollectionExtensions.cs(在 asp.net 样板 GraphQL 项目中)
ExtQueryContainer.cs
GraphQLSchema.cs