【问题标题】:ASP.NET Core API with GraphQL request using HotChocolate in itself带有 GraphQL 请求的 ASP.NET Core API 本身使用 HotChocolate
【发布时间】:2022-09-25 20:18:14
【问题描述】:
在我的 ASP NET Core 6 api 中,我们使用 Dapper 使用查询 (SQL) 进行查询,键入模型并在某些端点中返回结果或在某些服务中使用,例如,生成 PDF 报告并返回的服务在端点上的文件中
在查询检索生成 PDF 所需数据的情况下,我将如何使用安装在应用程序 (HotChocolate) 中的 GraphQL 来执行此操作?
简而言之,如何从应用程序到应用程序本身使用 GraphQL?
标签:
.net
asp.net-core
graphql
hotchocolate
【解决方案1】:
问题“简而言之,如何从应用程序到应用程序本身使用 GraphQL?”可以从两个方面来理解。
1)如何手动执行查询文档(id.string)?
如果您想直接执行查询,您可以使用IRequestExecutor。如果您查看HttpGetMiddleware,您会看到这是执行查询的方式。要获取IRequestExecutor,请从 DI 获取 IRequestExecutorResolver。
// From DI
IRequestExecutorResolver resolver = ...;
// See next snippet
IQueryRequest request = ...;
IRequestExecutor executor = await resolver.GetRequestExecutorAsync();
IExecutionResult result = await executor.ExecuteAsync(request);
类型 IQueryRequest 表示 GraphQL 请求。可以使用IQueryRequestBuilder 创建。如果您的解析器使用“特殊”依赖项,您必须在创建请求时明确指定它们。要检查什么算作“特殊”依赖,请检查 DefaultHttpRequestInterceptor。如果您在自己的拦截器中添加额外的“特殊”依赖项,情况也是如此。
IQueryRequest request = new QueryRequestBuilder().SetQuery("query text as string").SetVariableValues(/* if your query needs varaibles */).Create();
2) 如何使用 .NET 的 GraphQL 客户端?
StrawberryShake 是 ChilliCream 制作的 .NET GraphQL 客户端。这将为您的查询生成 .NET 类型并通过网络调用查询。本质上,您可以像任何其他公共客户端一样从其端点上的 GraphQL 服务器进行查询,即使您是从同一进程中进行查询。我不会详细说明这一点,因为我包含的链接向您展示了基本示例(而直接使用 IRequestExecutor 在文档中没有描述)。