IRONSOFTWAREHOME
AKTUALNOŚCI DLA PROGRAMISTÓW

GraphQL C# (jak to działa dla programistów)

Jacob Mellor, Dyrektor Technologiczny @ Team Iron
Jacob Mellor
Updated: 21 kwietnia 2026

GraphQL zdobył znaczną popularność jako alternatywa dla RESTful API do tworzenia elastycznych i wydajnych usług sieciowych. GraphQL jest dostępny w wielu różnych językach, takich jak Java, Python, ASP .NET core. Ale w tym artykułe zagłębimy się w użycie GraphQL w kontekście C#, eksplorując jego koncepcje, implementację i użycie z praktycznymi przykładami. Również będziemy używać IronPDF dla C# do tworzenia plików PDF za pomocą klasy zapytań definicji schematu GraphQL.

Czym jest GraphQL?

GraphQL to język zapytań dla API, który umożliwia klientom żądanie dokładnie tych danych, których potrzebują. W przeciwieństwie do RESTful API, gdzie wiele punktów końcowych może zwracać stałe struktury danych, usługi GraphQL pozwalają klientom na określenie kształtu danych, które potrzebują, co czyni je bardziej efektywnymi i elastycznymi.

Setting up GraphQL in C#

Aby używać GraphQL w projekcie C#, potrzebna będzie biblioteka HotChocolate, popularna implementacja serwera końcowego GraphQL dla .NET.

Najpierw zainstaluj paczkę NuGet Hot Chocolate:

PM > Install-Package HotChocolate.AspNetCore

Tworzenie schematu GraphQL

Schemat GraphQL definiuje typy danych i operacje dostępne w Twoim API. Oto prosty przykład implementacji schema-first dla aplikacji blogowej:

using HotChocolate.Types;

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

W tym przykladzie definiujemy pole helloWorld, ktore zwraca lancuch znakow "Hello, GraphQL!" po zapytaniu.

Tworzenie serwera GraphQL

Następnie, skonfiguruj serwer GraphQL używając ASP.NET Core:

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

Querying GraphQL from C#

Teraz zobaczmy, jak zapytac to API GraphQL z klienta C# uzywajac pakietu GraphQL.Client NuGet:

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);
    }
}

GraphQL C# oferuje potężny i elastyczny sposób projektowania API, a dzięki bibliotekom takim jak HotChocolate, integracja zaplecza GraphQL w aplikacjach C# staje się prosta. Definiując schemat i konfigurowując serwer, możesz udostępnić swoje dane za pośrednictwem API GraphQL i efektywnie zapytać je z klientów C#.

Wynik

GraphQL C# (Jak to dziala dla deweloperow): Rysunek 1 - Konsolowy wynik uruchomienia poprzedniego kodu

Intro to IronPDF in C#

IronPDF to wszechstronna biblioteka C#, która pozwala łatwo tworzyć, edytować i manipulować dokumentami PDF. W tej sekcji przedstawimy IronPDF i pokażemy, jak połączyć go z GraphQL do generowania dynamicznych raportów PDF.

IronPDF wyróżnia się swoją funkcjonalnością HTML do PDF, zachowując wszystkie układy i style. Umożliwia tworzenie plików PDF z treści internetowych, idealnych do raportów, faktur i dokumentacji. Pliki HTML, URL i ciągi HTML mogą zostać bezproblemowo zamienione na pliki 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");
    }
}

Instalacja IronPDF

Aby rozpocząć z IronPDF, zainstaluj paczkę NuGet:

PM > Install-Package IronPdf

Generowanie PDF z danymi GraphQL za pomocą IronPDF

Stwórzmy raport PDF, który pobiera dane użytkownika z naszego API GraphQL i wyświetla je w sformatowany sposób.

Przykład

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

W tym przykladzie uzywamy klienta GraphQL do pobrania wiadomosci helloWorld z naszego API GraphQL. Nastepnie konstruujemy szablon HTML, ktory zawiera ta wiadomosc i uzywamy ChromePdfRenderer IronPDF do konwersji tego HTML do pliku PDF.

Wynik

GraphQL C# (Jak to dziala dla deweloperow): Rysunek 2 - Wygenerowany PDF z poprzedniego kodu

Wnioski

GraphQL pojawił się jako przełom w rozwoju API, oferując bardziej elastyczny i wydajny sposób na zapytania i manipulowanie danymi w porównaniu do tradycyjnych RESTful API. Jego zdolność do umożliwienia klientom żądania tylko rodzaju danych, których potrzebują, czyni go szczególnie atrakcyjnym dla nowoczesnych aplikacji internetowych, gdzie wydajność i elastyczność są priorytetem.

Ponadto, łącznie GraphQL z narzędziami i paczkami takimi jak IronPDF otwiera świat ekscytujących możliwości dla generowania dynamicznych i danych raportów PDF. Niezależnie od tego, czy tworzysz faktury, generujesz raporty, czy produkujesz inne rodzaje dokumentów, integracja IronPDF z GraphQL w C# zapewnia potężny i wydajny sposób automatyzacji generowania PDF.

Podsumowując, GraphQL i C# tworzą potężne połączenie do budowy nowoczesnych, elastycznych i wydajnych aplikacji internetowych. Dzieki bibliotekom takim jak HotChocolate, GraphQL.Client i IronPDF, deweloperzy maja wszystkie narzedzia potrzebne do tworzenia solidnych, zorientowanych na dane aplikacji, ktore spelniaja wymagania wspolczesnego cyfrowego krajobrazu.

Samouczek HTML do PDF jest dostępny w następującym Przewodniku licencyjnym IronPDF dla użytkowników do skorzystania.

Jacob Mellor, Dyrektor Technologiczny @ Team Iron
Dyrektor ds. technologii

Jacob Mellor jest Chief Technology Officer w Iron Software i wizjonerskim inżynierem, pionierem technologii C# PDF. Jako pierwotny deweloper głównej bazy kodowej Iron Software, kształtuje architekturę produktów firmy od jej początku, przekształcając ją wspólnie z CEO Cameron Rimington w firmę liczącą ponad 50 osób, obsługującą NASA, Teslę i światowe agencje rządowe.

...
Czytaj więcej

Powiązane artykuły

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Zarezerwuj swoje darmowe Demo na żywo
Booking Badge

Zaufane przez miliony inżynierów na całym świecie

Logotypy klientów Iron Software
Otrzymaj swoje Konsultacja Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta