ライブ環境でテストする
ウォーターマークなしで本番環境でテストしてください。
必要な場所でいつでも動作します。
GraphQLは、データをクエリして処理するためのオープンソースのデータクエリ言語です。Facebookによって開発され、RESTに代わる柔軟かつ効率的なソリューションとして広く採用されています。GraphQLでは、クライアントが必要とする正確なデータを指定して要求できます。これにより、サーバーから返されるデータが最小限になり、パフォーマンスの向上に寄与します。柔軟で効率的なウェブサービスを構築するためのRESTful APIの代替として、大きな人気を集めています。 GraphQLは、Java、Python、ASP .NET Coreなどのさまざまな言語で利用可能です。 しかし、この記事では、C#のコンテキストにおけるGraphQLの使用について掘り下げ、その概念、実装、および実践的な例を用いた使用法を探求します。 また、私たちはIronPDFGraphQLスキーマ定義クエリクラスを使用してPDFファイルを作成するためのC#用。
APIのためのGraphQLクエリ言語は、クライアントが必要なデータのみを正確に要求できるようにします。 RESTful APIとは異なり、複数のエンドポイントが固定されたデータ構造を返すことがあるのに対して、GraphQLサービスはクライアントが必要なデータの形状を指定できるため、より効率的で柔軟性があります。
C#プロジェクトでGraphQLを使用するには、人気のあるGraphQLエンドポイントサーバー実装であるHotChocolateライブラリが必要です。.NET用。
まず、Hot Chocolate NuGetパッケージをインストールします:
Install-Package HotChocolate.AspNetCore
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!");
}
}
Imports HotChocolate.Types
Public Class QueryType
Inherits ObjectType
Protected Overrides Sub Configure(ByVal descriptor As IObjectTypeDescriptor)
descriptor.Field("hello world").Type(Of StringType)().Resolve(Function(context) "Hello, GraphQL!")
End Sub
End Class
この例では、「hello world」というフィールドを定義し、文字列 "Hello, 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();
});
}
}
Imports Microsoft.AspNetCore.Builder
Imports Microsoft.AspNetCore.Hosting
Imports Microsoft.Extensions.DependencyInjection
Public Class Startup
Public Sub ConfigureServices(ByVal services As IServiceCollection)
services.AddGraphQLServer().AddQueryType(Of QueryType)()
End Sub
Public Sub Configure(ByVal app As IApplicationBuilder, ByVal env As IWebHostEnvironment)
app.UseRouting()
app.UseEndpoints(Sub(endpoints)
endpoints.MapGraphQL()
End Sub)
End Sub
End Class
それでは、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);
}
}
'INSTANT VB NOTE: 'Option Strict Off' is used here since dynamic typing is used:
Option Strict Off
Imports GraphQL.Client
Imports GraphQL.Client.Http
Imports System
Imports System.Threading.Tasks
' query class
Public Class query
Public Shared Async Function Main() As Task
Dim graphQLClient = New GraphQLHttpClient(New GraphQLHttpClientOptions With {.EndPoint = New Uri("http://localhost:5000/graphql")})
Dim schema = New GraphQLRequest With {.Query = "
{
hello world
}"}
'INSTANT VB NOTE: In the following line, Instant VB substituted 'Object' for 'dynamic' - this will work in VB with Option Strict Off:
Dim response = Await graphQLClient.SendQueryAsync(Of Object)(schema)
Console.WriteLine(response.Data.hello)
End Function
End Class
GraphQL C#は、強力かつ柔軟なAPI設計方法を提供します。HotChocolateのようなライブラリを使用すると、C#アプリケーションにGraphQLバックエンドを統合することが簡単になります。 スキーマを定義し、サーバーを設定することで、GraphQL APIを通じてデータを公開し、C#クライアントから効率的にクエリを実行できます。
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();
// 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");
}
}
Imports IronPdf
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim renderer = New ChromePdfRenderer()
' 1. Convert HTML String to PDF
Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")
' 2. Convert HTML File to PDF
Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")
' 3. Convert URL to PDF
Dim url = "http://ironpdf.com" ' Specify the URL
Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
pdfFromUrl.SaveAs("URLToPDF.pdf")
End Sub
End Class
始めるには、NuGetパッケージをインストールしてください: IronPDF
Install-Package IronPdf
GraphQL APIからユーザーデータを取得し、フォーマットされた方法で表示する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");
}
}
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");
}
}
'INSTANT VB NOTE: 'Option Strict Off' is used here since dynamic typing is used:
Option Strict Off
Imports IronPdf
Imports GraphQL.Client
Imports GraphQL.Client.Http
Imports System.Threading.Tasks
Imports System
Public Class PdfGenerator
Public Async Function GeneratePdfAsync() As Task
Dim graphQLClient = New GraphQLHttpClient(New GraphQLHttpClientOptions With {.EndPoint = New Uri("http://localhost:5000/graphql")})
' graphql queries & graphql requests
Dim query As New GraphQLRequest With {.Query = "
{
hello world
}"}
'INSTANT VB NOTE: In the following line, Instant VB substituted 'Object' for 'dynamic' - this will work in VB with Option Strict Off:
Dim response = Await graphQLClient.SendQueryAsync(Of Object)(query)
Dim helloMessage = response.Data.hello.ToString()
Dim htmlContent = $"
<html>
<head><title>GraphQL Report</title></head>
<body>
<h1>GraphQL Report</h1>
<p>{helloMessage}</p>
</body>
</html>"
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
pdf.SaveAs("GraphQLReport.pdf")
End Function
End Class
この例では、GraphQLクライアントを使用して、GraphQL APIから「hello world」メッセージを取得します。 次に、このメッセージを含むHTMLテンプレートを作成し、IronPDFのChromePdfRenderer
を使用してこのHTMLをPDFファイルに変換します。
GraphQLはAPI開発における画期的な技術として登場し、従来のRESTful APIと比較して、データのクエリと操作をより柔軟かつ効率的に行う方法を提供します。クライアントが必要とするタイプのクエリデータのみを要求できるため、性能と柔軟性が最も重要視される現代のウェブアプリケーションに特に魅力的です。
さらに、GraphQLをツールやパッケージと組み合わせることでIronPDF動的かつデータ駆動のPDFレポートを生成するための興奮する可能性の世界を広げます。 請求書の作成、レポートの生成、その他の文書の作成を問わず、C#でIronPDFとGraphQLを統合することで、PDF生成を自動化する強力かつ効率的な方法を提供します。
要約すると、GraphQLとC#は、最新の柔軟で効率的なウェブアプリケーションを構築するための強力な組み合わせです。 HotChocolate、GraphQL.Client
、IronPDFのようなライブラリを使用することで、開発者は今日のデジタル環境の要求を満たす堅牢でデータ駆動型のアプリケーションを構築するためのすべてのツールを揃えることができます。
以下のリンクでHTMLからPDFへのチュートリアルが利用できますIronPDFライセンスガイド利用者が利用できるように。
9つの .NET API製品 オフィス文書用