.NET 幫助

GraphQL C#(對開發人員的工作原理)

喬迪·巴迪亞
喬迪·巴迪亞
2024年6月6日
分享:

介紹

GraphQL作為構建靈活且高效的網絡服務的替代方案,已獲得了顯著普及。 GraphQL 可用於多種不同的語言,如 Java、Python、ASP .NET core。 但是在這篇文章中,我們將深入探討在 C# 中使用 GraphQL,並通過實際示例探討其概念、實現和使用。 此外,我們將使用IronPDF使用 GraphQL 架構定義查詢類別來創建 PDF 文件的 C#。

GraphQL 是什麼?

GraphQL 是一種 API 的查詢語言,允許客戶端精確地請求所需的數據。 與 RESTful API 不同的是,GraphQL 服務允許用戶端指定他們所需的數據結構形狀,而多個端點可能會返回固定的數據結構,這使得它更加高效和靈活。

在 C# 中設置 GraphQL

要在 C# 專案中使用 GraphQL,需要 HotChocolate 函式庫,這是一個熱門的 .NET GraphQL 端點伺服器實現。

首先,安裝 Hot Chocolate NuGet 套件:

Install-Package HotChocolate.AspNetCore

建立 GraphQL 架構

GraphQL 實現模式定義了在您的 API 中可用的數據類型和操作。 以下是部落格應用程式的 GraphQL 服務架構的簡單範例:

using HotChocolate.Types;
public class QueryType : ObjectType
{
    protected override void Configure(IObjectTypeDescriptor descriptor)
    {
        descriptor.Field("hello world")
            .Type<StringType>()
            .Resolve(context => "Hello, GraphQL!");
    }
}
using HotChocolate.Types;
public class QueryType : ObjectType
{
    protected override void Configure(IObjectTypeDescriptor descriptor)
    {
        descriptor.Field("hello world")
            .Type<StringType>()
            .Resolve(context => "Hello, GraphQL!");
    }
}

在此範例中,我們定義了一個hello world字段,該字段返回字串"Hello, GraphQL"。!查詢時。

創建 GraphQL 伺服器

接下來,使用 ASP.NET Core 設置 GraphQL 伺服器:

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddGraphQLServer()
            .AddQueryType<QueryType>();
    }
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        app.UseRouting();
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapGraphQL();
        });
    }
}
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddGraphQLServer()
            .AddQueryType<QueryType>();
    }
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        app.UseRouting();
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapGraphQL();
        });
    }
}

從 C# 查詢 GraphQL

現在,讓我們看看如何使用 GraphQL.Client NuGet 套件從 C# 客戶端查詢此 GraphQL API:

using GraphQL.Client;
using GraphQL.Client.Http;
using System;
using System.Threading.Tasks;
// query class
public class query
{
    public static async Task Main()
    {
        using var graphQLClient = new GraphQLHttpClient(new GraphQLHttpClientOptions
        {
            EndPoint = new Uri("http://localhost:5000/graphql")
        });
        var schema = new GraphQLRequest
        {
            Query = @"
                {
                    hello world
                }"
        };
        var response = await graphQLClient.SendQueryAsync<dynamic>(schema);
        Console.WriteLine(response.Data.hello);
    }
}
using GraphQL.Client;
using GraphQL.Client.Http;
using System;
using System.Threading.Tasks;
// query class
public class query
{
    public static async Task Main()
    {
        using var graphQLClient = new GraphQLHttpClient(new GraphQLHttpClientOptions
        {
            EndPoint = new Uri("http://localhost:5000/graphql")
        });
        var schema = new GraphQLRequest
        {
            Query = @"
                {
                    hello world
                }"
        };
        var response = await graphQLClient.SendQueryAsync<dynamic>(schema);
        Console.WriteLine(response.Data.hello);
    }
}

GraphQL C# 提供了一種強大而靈活的方式來設計 API,並且有了像 HotChocolate 這樣的庫,將 GraphQL 後端整合到您的 C# 應用程式中變得簡單明瞭。 通過定義架構和設置伺服器,您可以通過 GraphQL API 來暴露您的數據,並從 C# 客戶端高效地查詢數據。

輸出

GraphQL C#(對開發人員的運作方式):圖 1 - 執行前述代碼的控制台輸出

IronPDF 在 C# 中的介紹

IronPDF是一個多功能的 C# 程式庫,讓您可以輕鬆地創建、編輯和操作 PDF 文件。 在本節中,我們將介紹 IronPDF 並演示如何將其與 GraphQL 結合使用以生成動態 PDF 報告。

IronPDF 在其方面表現出色HTML 轉換為 PDF 功能,保留所有佈局和樣式。 它允許從網頁內容創建 PDF,非常適合報告、發票和文檔。 HTML 文件、網址和 HTML 字串可以無縫轉換為 PDF。

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}

安裝 IronPDF

要開始使用 IronPDF,請安裝 NuGet 套件:

Install-Package IronPdf

使用 IronPDF 生成包含 GraphQL 数据的 PDF

讓我們創建一份 PDF 報告,從我們的 GraphQL API 中獲取用戶數據,並以格式化的方式顯示出來。

範例

using IronPdf;
using GraphQL.Client;
using GraphQL.Client.Http;
using System.Threading.Tasks;
using System;
public class PdfGenerator
{
    public async Task GeneratePdfAsync()
    {
        var graphQLClient = new GraphQLHttpClient(new GraphQLHttpClientOptions
        {
            EndPoint = new Uri("http://localhost:5000/graphql")
        });
        // graphql queries & graphql requests
        var query = new GraphQLRequest 
        {
            Query = @"
                {
                    hello world
                }"
        };
        var response = await graphQLClient.SendQueryAsync<dynamic>(query);
        var helloMessage = response.Data.hello.ToString();
        var htmlContent = $@"
            <html>
            <head><title>GraphQL Report</title></head>
            <body>
                <h1>GraphQL Report</h1>
                <p>{helloMessage}</p>
            </body>
            </html>";
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("GraphQLReport.pdf");
    }
}
using IronPdf;
using GraphQL.Client;
using GraphQL.Client.Http;
using System.Threading.Tasks;
using System;
public class PdfGenerator
{
    public async Task GeneratePdfAsync()
    {
        var graphQLClient = new GraphQLHttpClient(new GraphQLHttpClientOptions
        {
            EndPoint = new Uri("http://localhost:5000/graphql")
        });
        // graphql queries & graphql requests
        var query = new GraphQLRequest 
        {
            Query = @"
                {
                    hello world
                }"
        };
        var response = await graphQLClient.SendQueryAsync<dynamic>(query);
        var helloMessage = response.Data.hello.ToString();
        var htmlContent = $@"
            <html>
            <head><title>GraphQL Report</title></head>
            <body>
                <h1>GraphQL Report</h1>
                <p>{helloMessage}</p>
            </body>
            </html>";
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("GraphQLReport.pdf");
    }
}

在此範例中,我們使用 GraphQL 客戶端從 GraphQL API 獲取「hello world」訊息。 接著,我們構建一個包含此消息的 HTML 模板,然後使用 IronPDF 的 ChromePdfRenderer 將這個 HTML 轉換為 PDF 檔案。

輸出

GraphQL C#(對開發者如何運作):圖 2 - 上述程式碼生成的 PDF

結論

GraphQL 已成為 API 開發中的改革者,提供比傳統的 RESTful API 更靈活和高效的資料查詢和操作方式。它允許客戶端僅請求所需的類型查詢資料的能力,對於現代網路應用程式在性能和靈活性至關重要。

此外,將 GraphQL 與工具和套件結合起來,如IronPDF開啟了生成動態和數據驅動的 PDF 報告的令人興奮的可能性世界。 無論您是在製作發票、生成報告,還是製作任何其他類型的文件,將IronPDF與C#的GraphQL整合為您提供了一種強大且高效的方法來自動化PDF生成。

總結來說,GraphQL 和 C# 是構建現代化、靈活且高效的網絡應用程式的一個強大組合。 使用像 HotChocolate、GraphQL.Client 和 IronPDF 這樣的庫,開發人員擁有構建強大數據驅動應用程式所需的所有工具,以滿足當今數位環境的需求。

將 HTML 轉換為 PDF 的教程可在以下位置獲得IronPDF 授權指南供使用者使用。

喬迪·巴迪亞
軟體工程師
Jordi 最擅長 Python、C# 和 C++,當他不在 Iron Software 發揮技能時,他會進行遊戲編程。他負責產品測試、產品開發和研究,為持續產品改進增添了巨大的價值。多樣化的經驗使他感到挑戰和投入,他說這是與 Iron Software 合作的最喜歡的方面之一。Jordi 在佛羅里達州邁阿密長大,並在佛羅里達大學學習計算機科學和統計學。
< 上一頁
C# 呼叫基底建構函式(開發者如何運作)
下一個 >
C# Long 轉換為字串(開發人員如何操作)