在当今的软件开发领域,GraphQL作为一种强大的查询语言和运行时系统,正逐渐受到开发者们的青睐,它允许客户端按需请求数据,从而减少了过度获取或不足获取数据的风险,结合ASP.NET Core这一高效、跨平台的框架,我们可以构建出既灵活又高性能的Web API,本文将引导您通过一个简单的“Hello World”示例,来了解如何在ASP.NET Core中使用GraphQL。
一、准备工作
1. 安装.NET SDK
确保您的开发环境中已经安装了.NET SDK,您可以从[微软官网](https://dotnet.microsoft.com/download)下载并安装最新版本的.NET SDK。
2. 创建ASP.NET Core项目
打开命令提示符或终端,运行以下命令来创建一个新的ASP.NET Core Web API项目:
dotnet new webapi -n GraphQLDemo
3. 导航到项目目录
cd GraphQLDemo
二、安装GraphQL相关包
我们需要安装一些NuGet包来支持GraphQL的开发,在项目目录下,运行以下命令:
dotnet add package HotChocolate.AspNetCore --version x.x.x dotnet add package HotChocolate.Data --version x.x.x dotnet add package Microsoft.EntityFrameworkCore --version x.x.x dotnet add package Microsoft.EntityFrameworkCore.InMemory --version x.x.x
请将x.x.x
替换为您希望安装的具体版本号。
三、配置GraphQL服务
在Startup.cs
文件中,配置GraphQL服务,修改ConfigureServices
方法,添加GraphQL的相关服务:
public void ConfigureServices(IServiceCollection services) { services.AddControllers(); services.AddEndpointsApiExplorer(); services.AddSwaggerGen(); // Add GraphQL services services.AddGraphQLServer() .ModifyRequestOptions(opt => opt.IncludeExceptionDetails = true); services.AddSingleton<ISchemaFilter, DefaultSchemaFilter>(); services.AddSingleton<IDocumentExecuter, DocumentExecuter>(); services.AddSingleton<IDocumentWriter, DefaultDocumentWriter>(); services.AddSingleton<IErrorFormatter, PrettyErrorFormatter>(); }
在Configure
方法中,添加GraphQL中间件:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); app.UseSwagger(); app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "GraphQLDemo API")); } app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); endpoints.MapGraphQL(); // Map the GraphQL endpoint }); }
四、创建GraphQL模式
在项目中创建一个名为Models
的文件夹,并在其中创建一个Query.cs
文件,用于定义我们的GraphQL模式:
using HotChocolate; using HotChocolate.Types; using System.Threading.Tasks; namespace GraphQLDemo.Models { public class Query { [UseProjection] [UseFiltering] [UseSorting] public Task<string> GetHelloWorld() => Task.FromResult("Hello, World!"); } }
五、运行应用程序
一切准备就绪,您可以运行应用程序了,在终端中执行以下命令:
dotnet run
应用程序启动后,打开浏览器并访问http://localhost:5000/graphql
,您将看到一个GraphQL的交互式界面,在左侧的查询编辑器中输入以下查询:
{ getHelloWorld }
点击“Execute”按钮,您应该会在右侧的结果区域看到“Hello, World!”的响应。
六、FAQs
Q1: 如何更改GraphQL的端口号?
A1: 要更改GraphQL的端口号,您需要在Program.cs
文件中修改CreateHostBuilder
方法中的端口配置,如果您想将端口更改为5001,可以这样修改:
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseUrls("http://localhost:5001"); webBuilder.UseStartup<Startup>(); });
Q2: 如果我想添加更多的GraphQL查询或突变,我该怎么做?
A2: 您可以通过在Models
文件夹中创建更多的.cs
文件来实现,每个文件都可以包含一个或多个GraphQL操作(查询、突变等),您可以创建一个名为Mutation.cs
的文件,并定义如下的突变:
using HotChocolate; using HotChocolate.Types; using System.Threading.Tasks; namespace GraphQLDemo.Models { public class Mutation { public async Task<string> EchoMessage(string message) { return await Task.FromResult($"Echo: {message}"); } } }
在Query.cs
文件中,您可以添加一个字段来调用这个突变:
[ExtendObjectType("Query")] public class QueryExtensions { public Mutation Mutation => new Mutation(); }
各位小伙伴们,我刚刚为大家分享了有关“ASP.NET Core使用GraphQL第一章之Hello World”的知识,希望对你们有所帮助。如果您还有其他相关问题需要解决,欢迎随时提出哦!
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1367958.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复