フッターコンテンツにスキップ
.NETヘルプ

GraphQL C#(開発者向けの動作方法)

GraphQL は柔軟性と効率性を備えたWebサービスを構築するためのRESTful APIの代替として大きな人気を得ています。 GraphQLは、Java、Python、ASP .NETコアなど、様々な言語で利用可能です。 しかし、この記事ではC#の文脈でGraphQLを使用する方法を掘り下げ、その概念、実装、使用方法を実用的な例と共に探ります。 また、GraphQLスキーマ定義のクエリクラスを使用してPDFファイルを作成するためにC#のIronPDFを使用します。

GraphQLとは何ですか?

GraphQLは、クライアントが必要なデータだけを要求できるAPIのためのクエリ言語です。 複数のエンドポイントが固定データ構造を返す可能性のあるRESTful APIとは異なり、GraphQLサービスではクライアントが必要なデータの形状を指定できるため、より効率的で柔軟です。

C&#でのGraphQLのセットアップ

C#プロジェクトでGraphQLを使用するには、.NET用の人気のあるGraphQLエンドポイントサーバー実装であるHotChocolateライブラリが必要です。

まず、Hot ChocolateのNuGetパッケージをインストールします:

Install-Package HotChocolate.AspNetCore

GraphQLスキーマの作成

GraphQLスキーマは、APIで利用可能なデータ型と操作を定義します。 以下はブログアプリケーションのスキーマファースト実装の簡単な例です:

using HotChocolate.Types;

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

public class QueryType : ObjectType
{
    protected override void Configure(IObjectTypeDescriptor descriptor)
    {
        descriptor.Field("helloWorld")
            .Type<StringType>()
            .Resolve(context => "Hello, GraphQL!");
    }
}
$vbLabelText   $csharpLabel

この例では、クエリされたときに文字列"Hello, GraphQL!"を返すhelloWorldフィールドを定義します。

GraphQLサーバーの作成

次に、ASP.NETコアを使用して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();
        });
    }
}
$vbLabelText   $csharpLabel

C&#からのGraphQLのクエリ

GraphQL.Client NuGetパッケージを使用して、C#クライアントからこのGraphQL APIにクエリを実行する方法を見てみましょう:

using GraphQL.Client.Http;
using GraphQL.Client.Serializer.Newtonsoft;
using System;
using System.Threading.Tasks;

// GraphQL query class to interact with the API
public class Query
{
    public static async Task Main()
    {
        // Set up the GraphQL client
        using var graphQLClient = new GraphQLHttpClient(new GraphQLHttpClientOptions
        {
            EndPoint = new Uri("http://localhost:5000/graphql") // GraphQL endpoint
        }, new NewtonsoftJsonSerializer());

        // Define the GraphQL query
        var request = new GraphQLRequest
        {
            Query = @"
                {
                    helloWorld
                }"
        };

        var response = await graphQLClient.SendQueryAsync<dynamic>(request);
        // Print the response from the GraphQL server
        Console.WriteLine((string)response.Data.helloWorld);
    }
}
using GraphQL.Client.Http;
using GraphQL.Client.Serializer.Newtonsoft;
using System;
using System.Threading.Tasks;

// GraphQL query class to interact with the API
public class Query
{
    public static async Task Main()
    {
        // Set up the GraphQL client
        using var graphQLClient = new GraphQLHttpClient(new GraphQLHttpClientOptions
        {
            EndPoint = new Uri("http://localhost:5000/graphql") // GraphQL endpoint
        }, new NewtonsoftJsonSerializer());

        // Define the GraphQL query
        var request = new GraphQLRequest
        {
            Query = @"
                {
                    helloWorld
                }"
        };

        var response = await graphQLClient.SendQueryAsync<dynamic>(request);
        // Print the response from the GraphQL server
        Console.WriteLine((string)response.Data.helloWorld);
    }
}
$vbLabelText   $csharpLabel

GraphQL C#は、APIを設計するための強力で柔軟な方法を提供し、HotChocolateのようなライブラリを使用することで、C#アプリケーションにGraphQLバックエンドを統合することが容易になります。 スキーマを定義し、サーバーをセットアップすることで、データをGraphQL APIを通じて公開し、C#クライアントから効率的にクエリを行うことができます。

出力

GraphQL C# (開発者のための動作方法): 図 1 - 前のコードからのコンソール出力

C&#におけるIronPDFの入門

IronPDFは、PDFドキュメントを簡単に作成、編集、操作できる多用途なC#ライブラリです。 このセクションでは、IronPDFの導入と、GraphQLと組み合わせて動的なPDFレポートを生成する方法を示します。

IronPDFはHTMLからPDFへの機能に優れており、すべてのレイアウトとスタイルを保存します。 ウェブコンテンツからのPDF作成を可能にし、レポート、請求書、ドキュメントに最適です。 HTMLファイル、URL、HTML文字列はシームレスにPDFに変換できます。

using IronPdf;

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

        // 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");

        // 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");

        // 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();

        // 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");

        // 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");

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

IronPDFのインストール

IronPDFの使用を開始するには、NuGetパッケージをインストールします:

Install-Package IronPdf

GraphQLデータを使用したIronPDFによるPDF生成

GraphQL APIからユーザーデータを取得し、フォーマットされた形式で表示するPDFレポートを作成しましょう。

using IronPdf;
using GraphQL.Client.Http;
using GraphQL.Client.Serializer.Newtonsoft;
using System;
using System.Threading.Tasks;

public class PdfGenerator
{
    public async Task GeneratePdfAsync()
    {
        // Initialize GraphQL client
        var graphQLClient = new GraphQLHttpClient(new GraphQLHttpClientOptions
        {
            EndPoint = new Uri("http://localhost:5000/graphql")
        }, new NewtonsoftJsonSerializer());

        // Define GraphQL query
        var query = new GraphQLRequest 
        {
            Query = @"
                {
                    helloWorld
                }"
        };

        var response = await graphQLClient.SendQueryAsync<dynamic>(query);
        var helloMessage = response.Data.helloWorld.ToString();

        // Create HTML content for the PDF
        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.Http;
using GraphQL.Client.Serializer.Newtonsoft;
using System;
using System.Threading.Tasks;

public class PdfGenerator
{
    public async Task GeneratePdfAsync()
    {
        // Initialize GraphQL client
        var graphQLClient = new GraphQLHttpClient(new GraphQLHttpClientOptions
        {
            EndPoint = new Uri("http://localhost:5000/graphql")
        }, new NewtonsoftJsonSerializer());

        // Define GraphQL query
        var query = new GraphQLRequest 
        {
            Query = @"
                {
                    helloWorld
                }"
        };

        var response = await graphQLClient.SendQueryAsync<dynamic>(query);
        var helloMessage = response.Data.helloWorld.ToString();

        // Create HTML content for the PDF
        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");
    }
}
$vbLabelText   $csharpLabel

この例では、GraphQLクライアントを使用してGraphQL APIからhelloWorldメッセージを取得します。 そして、このメッセージを含むHTMLテンプレートを構築し、IronPDFのChromePdfRendererを使用してこのHTMLをPDFファイルに変換します。

出力

GraphQL C# (開発者のための動作方法): 図 2 - 前のコードから出力されたPDF

結論

GraphQLはAPI開発における画期的なテクノロジーとして登場し、従来のRESTful APIと比較してデータを効率的かつ柔軟にクエリし操作する方法を提供します。クライアントが必要なタイプのクエリデータのみを要求できる能力は、パフォーマンスと柔軟性が求められる現代のWebアプリケーションで特に魅力的です。

さらに、IronPDFのようなツールやパッケージとGraphQLを組み合わせることで、動的でデータ駆動型のPDFレポートを生成するエキサイティングな可能性の世界が広がります。 請求書の作成、レポートの生成、またはその他の種類のドキュメントの作成において、C#でIronPDFをGraphQLと統合することは、PDF生成を自動化するための強力で効率的な方法を提供します。

総じて、GraphQLとC#は、現代的で柔軟かつ効率的なWebアプリケーションを構築するための強力な組み合わせです。 HotChocolate、GraphQL.Client、IronPDFのようなライブラリを使用すると、開発者は今日のデジタル環境の要求に応える堅牢でデータ駆動型のアプリケーションを構築するために必要なすべてのツールを手に入れることができます。

HTMLからPDFについてのチュートリアルは、次のIronPDFライセンシングガイドで利用可能です。

よくある質問

GraphQLはRESTful APIとどのように異なりますか?

GraphQLはクライアントが必要なデータだけを要求できるため、RESTful APIに典型的なフェッチ過剰やフェッチ不足を減らします。この柔軟性により、データのクエリと操作においてより効率的です。

C#でGraphQLサーバーを設定するために推奨されるライブラリは何ですか?

C#でのGraphQLサーバー設定にはHotChocolateライブラリが推奨されます。.NET環境内でスキーマを定義し、クエリを管理するためのツールを提供します。

C#でGraphQLデータからPDFレポートを作成するにはどうすればよいですか?

GraphQL APIからデータを取得し、IronPDFを使用してそのデータを動的なPDFレポートに変換できます。IronPDFを用いると、HTMLコンテンツをPDF形式に変換してPDFドキュメントを操作可能です。

C#プロジェクトにGraphQLを統合するにはどのようなステップが含まれますか?

C#プロジェクトにGraphQLを統合するためには、HotChocolate NuGetパッケージをインストールし、データ型や操作を概説するスキーマを定義し、ASP.NET Coreを使用してサーバーを設定します。

C#クライアントを使用してGraphQL APIにクエリを行うにはどうすればよいですか?

GraphQL.Client NuGetパッケージを使用してAPIエンドポイントURIでGraphQLHttpClientをセットアップします。クエリを定義し、SendQueryAsyncメソッドを使用して送信します。

C#でURLをPDFに変換できますか?

はい、IronPDFのChromePdfRendererを使用してC#でURLをPDFに変換できます。これにより、URLからHTMLコンテンツを直接PDFドキュメントにレンダリングできます。

PDF作成のためにGraphQLと併用する場合のIronPDF使用理由は?

IronPDFはGraphQLを通じて取得した動的HTMLコンテンツをPDFに変換できるため、更新された特定のデータ出力を必要とするデータ駆動のレポートを作成するのに理想的です。

C#で基本的なGraphQLスキーマを作成するにはどうすればよいですか?

C#で基本的なGraphQLスキーマを作成するには、HotChocolateライブラリのスキーマ定義ツールを使用して利用可能なデータ型や操作を定義します。これにはフィールドとそのデータ型の指定が含まれます。

C#でのウェブアプリケーションにGraphQLを使用する利点は何ですか?

C#でGraphQLを使用すると、柔軟性とパフォーマンスの恩恵を受け、効率的なデータのクエリと操作を可能にし、現代のウェブアプリケーションを構築するために不可欠です。

C#プロジェクトでIronPDFを使用するにはどのようにインストールしますか?

C#プロジェクトでIronPDFを使用するには、NuGetパッケージマネージャーで次のコマンドを使用してインストールします:Install-Package IronPdf。これにより、そのPDF生成と操作機能にアクセスできます。

Jacob Mellor、Ironチームの最高技術責任者(CTO)
最高技術責任者(CTO)

Jacob Mellorは、Iron Softwareの最高技術責任者であり、C# PDF技術の開拓者としてその先進的な役割を担っています。Iron Softwareのコアコードベースのオリジナルデベロッパーである彼は、創業時から製品のアーキテクチャを形作り、CEOのCameron Rimingtonと協力してNASA、Tesla、全世界の政府機関を含む50人以上の会社に成長させました。

Jacobは、1998年から2001年にかけてマンチェスター大学で土木工学の第一級優等学士号(BEng)を取得しました。1999年にロンドンで最初のソフトウェアビジネスを立ち上げ、2005年には最初の.NETコンポーネントを作成し、Microsoftエコシステムにおける複雑な問題の解決を専門にしました。

彼の旗艦製品であるIronPDFとIronSuite .NETライブラリは、全世界で3000万以上のNuGetインストールを達成しており、彼の基本コードが世界中で使用されている開発者ツールを支えています。商業的な経験を25年間積み、コードを書くことを41年間続けるJacobは、企業向けのC#、Java、およびPython PDF技術の革新を推進し続け、次世代の技術リーダーを指導しています。