在生產環境中測試,無水印。
在任何需要的地方都能運行。
獲得 30 天的全功能產品。
在幾分鐘內上手運行。
試用產品期間完全訪問我們的支援工程團隊
GraphQL作為構建靈活且高效的網絡服務的替代方案,已獲得了顯著普及。 GraphQL 可用於多種不同的語言,如 Java、Python、ASP .NET core。 但是在這篇文章中,我們將深入探討在 C# 中使用 GraphQL,並通過實際示例探討其概念、實現和使用。 此外,我們將使用IronPDF使用 GraphQL 架構定義查詢類別來創建 PDF 文件的 C#。
GraphQL 是一種 API 的查詢語言,允許客戶端精確地請求所需的數據。 與 RESTful API 不同的是,GraphQL 服務允許用戶端指定他們所需的數據結構形狀,而多個端點可能會返回固定的數據結構,這使得它更加高效和靈活。
要在 C# 專案中使用 GraphQL,需要 HotChocolate 函式庫,這是一個熱門的 .NET GraphQL 端點伺服器實現。
首先,安裝 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!");
}
}
在此範例中,我們定義了一個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();
});
}
}
現在,讓我們看看如何使用 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# 客戶端高效地查詢數據。
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,請安裝 NuGet 套件:
Install-Package IronPdf
讓我們創建一份 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 已成為 API 開發中的改革者,提供比傳統的 RESTful API 更靈活和高效的資料查詢和操作方式。它允許客戶端僅請求所需的類型查詢資料的能力,對於現代網路應用程式在性能和靈活性至關重要。
此外,將 GraphQL 與工具和套件結合起來,如IronPDF開啟了生成動態和數據驅動的 PDF 報告的令人興奮的可能性世界。 無論您是在製作發票、生成報告,還是製作任何其他類型的文件,將IronPDF與C#的GraphQL整合為您提供了一種強大且高效的方法來自動化PDF生成。
總結來說,GraphQL 和 C# 是構建現代化、靈活且高效的網絡應用程式的一個強大組合。 使用像 HotChocolate、GraphQL.Client
和 IronPDF 這樣的庫,開發人員擁有構建強大數據驅動應用程式所需的所有工具,以滿足當今數位環境的需求。
將 HTML 轉換為 PDF 的教程可在以下位置獲得IronPDF 授權指南供使用者使用。