GraphQL是一種用於構建API的查詢語言和執行時的開源規範。它提供了一種更高效、靈活和強大的方式來定義和查詢API。在.Net Core開發中,我們可以使用現有的GraphQL庫來輕松地構建和整合GraphQL服務。
安裝和設定
首先,我們需要在.Net Core計畫中安裝GraphQL庫。可以使用NuGet包管理器或透過dotnet命令列來安裝。
dotnet add package GraphQL
安裝完成後,我們可以在計畫中引入GraphQL相關名稱空間,並開始構建GraphQL服務。
using GraphQL;
using GraphQL.Types;
構建Schema和型別
GraphQL的核心概念是Schema和型別。Schema定義了可用的查詢和操作,而型別則定義了查詢和操作的結構。在.Net Core中,我們可以透過繼承Schema和ObjectGraphType類來建立自訂的Schema和型別。
public class MyQuery : ObjectGraphType
{
public MyQuery()
{
Field<StringGraphType>(
name: "hello",
resolve: context => "Hello, GraphQL!"
);
}
}
public class MySchema : Schema
{
public MySchema(IServiceProvider serviceProvider)
: base(serviceProvider)
{
Query = serviceProvider.GetRequiredService<MyQuery>();
}
}
在上面的範例中,我們建立了一個簡單的查詢型別MyQuery,其中包含一個欄位hello,返回一個固定的字串。然後,我們建立了一個自訂的SchemaMySchema,將MyQuery設定為查詢欄位。
整合GraphQL服務
在.Net Core中,我們可以使用ASP.NET Core的中介軟體來整合GraphQL服務。首先,我們需要添加GraphQL中介軟體。
using GraphQL.Server;
using GraphQL.Server.Ui.Playground;
然後,在Startup.cs檔的ConfigureServices方法中,註冊GraphQL服務和Schema。
public void ConfigureServices(IServiceCollection services)
{
// ...
services.AddSingleton<MyQuery>();
services.AddSingleton<MySchema>();
services.AddGraphQL(options =>
{
options.EnableMetrics = true;
options.ExposeExceptions = true;
})
.AddSystemTextJson()
.AddGraphTypes(ServiceLifetime.Singleton);
// ...
}
最後,在Configure方法中,使用GraphQL中介軟體來處理GraphQL請求。
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// ...
app.UseGraphQL<MySchema>();
app.UseGraphQLPlayground(new GraphQLPlaygroundOptions());
// ...
}
發送GraphQL查詢
現在,我們已經完成了GraphQL服務的構建和整合。可以使用任何HTTP客戶端來向GraphQL服務發送查詢請求。以下是一個使用cURL命令發送查詢請求的範例。
curl -X POST \
-H "Content-Type: application/json" \
-d '{"query":"{ hello }"}' \
http://localhost:5000/graphql
總結
透過使用.Net Core開發的GraphQL,我們可以輕松地構建和整合GraphQL服務。使用GraphQL,我們可以更高效、靈活和強大地定義和查詢API。希望本文對你理解和使用基於.Net Core開發的GraphQL有所幫助。如果你想深入了解更多關於GraphQL的內容,可以查閱官方文件和其他資源。謝謝閱讀!