當前位置: 妍妍網 > 碼農

基於.Net Core開發的GraphQL

2024-02-01碼農

GraphQL是一種用於構建API的查詢語言和執行時的開源規範。它提供了一種更高效、靈活和強大的方式來定義和查詢API。在.Net Core開發中,我們可以使用現有的GraphQL庫來輕松地構建和整合GraphQL服務。

  1. 安裝和設定

首先,我們需要在.Net Core計畫中安裝GraphQL庫。可以使用NuGet包管理器或透過dotnet命令列來安裝。


dotnet add package GraphQL

安裝完成後,我們可以在計畫中引入GraphQL相關名稱空間,並開始構建GraphQL服務。


using GraphQL;
using GraphQL.Types;

  1. 構建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設定為查詢欄位。

  1. 整合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());
// ...
}

  1. 發送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的內容,可以查閱官方文件和其他資源。謝謝閱讀!