IRONSOFTWAREHOME
AKTUALNOŚCI DLA PROGRAMISTÓW

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

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

API sa niezbedne we wspolczesnym srodowisku tworzenia oprogramowania, poniewaz ulatwiaja komunikacje pomiedzy roznymi systemami i komponentami oprogramowania. Aby programisci mogli efektywnie korzystac z API, konieczna jest szczegolowa i zrozumiala dokumentacja. Dwa skuteczne narzedzia, ktore moga pomoc w pracy nad dokumentacja API w C#, to NSwag C# i IronPDF. W tym artykule omowimy, jak uzywac NSwag do generowania specyfikacji API z .NET Core oraz jak generowac wysokiej jakosci dokumenty PDF z tych specyfikacji z uzyciem IronPDF.

How to Use NSwag in C#

  1. Utworz RESTful web API przy uzyciu Swagger UI.
  2. Utworz aplikacje konsolowa C#.
  3. Zainstaluj biblioteke NSwag.
  4. Zaimportuj przestrzen nazw i utworz obiekt.
  5. Przetwarzaj plik JSON Swagger do kodu C#.
  6. Wykonaj kod i wyswietl wynik.

Zrozumienie NSwag

Narzedzie .NET Swagger o nazwie NSwag zostalo stworzone, aby ulatwic tworzenie specyfikacji Swagger, czyli dokumentow OpenAPI, dla API skonstruowanych przy uzyciu ASP.NET Web API, ASP.NET Core lub innych frameworkow .NET.

Funkcje NSwag

Tworzenie specyfikacji Swagger

NSwag może wykorzystywać kontrolery, modele i zestawy .NET do automatycznego generowania specyfikacji Swagger. NSwag generuje kompleksową dokumentację obejmującą punkty końcowe API, formularze żądań/odpowiedzi, techniki uwierzytelniania i wiele innych elementów poprzez analizę struktury kodu API.

Łączność z projektami .NET

Programiści mogą z łatwością włączyć generowanie Swagger do swoich procesów programistycznych poprzez integrację NSwag z projektami .NET. Programiści mogą zapewnić aktualizację dokumentacji wraz z kodem źródłowym, dodając NSwag do projektu .NET Core, co spowoduje automatyczne generowanie specyfikacji Swagger przy każdej kompilacji projektu.

Personalizacja i rozszerzenie

Dzięki szerokiemu zakresowi możliwości dostosowywania oferowanych przez NSwag programiści mogą z łatwością dostosować wygenerowane specyfikacje Swagger do swoich indywidualnych potrzeb. Programiści mają kontrolę nad wieloma elementami generowanej dokumentacji, w tym kodami odpowiedzi, objaśnieniami parametrów i konwencjami nazewnictwa tras, poprzez ustawienia konfiguracyjne i adnotacje.

Pierwsze kroki z NSwag

Konfiguracja NSwag w aplikacji konsolowej C#

Biblioteka klas bazowych NSwag zawiera przestrzeń nazw core, Annotation oraz generowania kodu, które powinny być dostępne po zainstalowaniu z NuGet. Jak zintegrować NSwag z aplikacją C# w celu generowania kodu i specyfikacji Swagger oraz w jaki sposób NSwag może poprawić wydajność procesu programowania.

NSwag C# (Jak to działa dla deweloperów): Rysunek 1 - Przeglądaj NSwag w Menedżerze pakietów Visual Studio i instaluj go

Wdrażanie NSwag w konsoli Windows i Forms

Dzięki automatycznemu generowaniu klientów programiści mogą efektywnie tworzyć kod umożliwiający dostęp do interfejsów API bezpośrednio z poziomu swoich aplikacji desktopowych poprzez integrację NSwag z aplikacją desktopową dla systemu Windows. Może to być bardzo pomocne podczas tworzenia aplikacji desktopowych, które komunikują się z usługami online lub interfejsami API RESTful.

NSwag może być używany w aplikacjach internetowych do generowania dokumentacji API dla wewnętrznych interfejsów API oraz kodu klienckiego do korzystania z zewnętrznych interfejsów API. Pomaga to programistom w utrzymaniu spójności komponentów frontendowych i backendowych ich aplikacji.

Przyklad NSwag C#

Oto przykład kodu pokazujący, jak używać NSwag do generowania kodu klienta w języku C#:

using NSwag.CodeGeneration.CSharp;
using NSwag;
using System.Reflection;
using System.CodeDom.Compiler;
using Microsoft.CodeAnalysis;
using System.Net.Http;
using System.IO;
using System.Collections.Generic;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        using (var wclient = new System.Net.WebClient())
        {
            // Create JSON file data from the Swagger .NET Core web API
            var document = await OpenApiDocument.FromJsonAsync(wclient.DownloadString("http://localhost:5013/swagger/v1/swagger.json"));
            var settings = new CSharpClientGeneratorSettings
            {
                ClassName = "Weather",
                CSharpGeneratorSettings = { Namespace = "Demo" }
            };

            var generator = new CSharpClientGenerator(document, settings);
            var code = generator.GenerateFile();
            var assembly = CompileCode(code);
            var clientType = assembly.GetType("Demo.WeatherClient"); // Replace with your actual client class name
            using (var httpClient = new HttpClient())
            {
                var client = (IApiClient)Activator.CreateInstance(clientType, httpClient);
                var result = await client.GetWeatherForecastAsync();
                foreach (var item in result)
                {
                    Console.WriteLine($"Date: {item.Date} F: {item.TemperatureF} C: {item.TemperatureC} Summary: {item.Summary}");
                }
            }
        }
    }

    static Assembly CompileCode(string code)
    {
        using (var memoryStream = new MemoryStream())
        {
            var assemblyPath = Path.GetDirectoryName(typeof(object).Assembly.Location);
            var references = new List<MetadataReference>
            {
                MetadataReference.CreateFromFile(typeof(object).GetTypeInfo().Assembly.Location),
                MetadataReference.CreateFromFile(Path.Combine(assemblyPath, "Microsoft.AspNetCore.Mvc.dll")),
                MetadataReference.CreateFromFile(Path.Combine(assemblyPath, "System.Private.CoreLib.dll"))
            };

            var compilation = Microsoft.CodeAnalysis.CSharp.CSharpCompilation.Create("ApiClient")
                .WithOptions(new Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary))
                .AddReferences(references)
                .AddSyntaxTrees(Microsoft.CodeAnalysis.CSharp.SyntaxFactory.ParseSyntaxTree(code));

            var emitResult = compilation.Emit(memoryStream);
            if (!emitResult.Success)
            {
                Console.WriteLine("Compilation errors:");
                foreach (var diagnostic in emitResult.Diagnostics)
                {
                    Console.WriteLine(diagnostic);
                }
                return null;
            }
            memoryStream.Seek(0, SeekOrigin.Begin);
            return Assembly.Load(memoryStream.ToArray());
        }
    }

    public interface IApiClient
    {
        // Replace with your actual method name and return type
        Task<List<WeatherForecast>> GetWeatherForecastAsync();
    }

    public class WeatherForecast
    {
        public DateTime Date { get; set; }
        public int TemperatureC { get; set; }
        public int TemperatureF { get; set; }
        public string Summary { get; set; }
    }
}

Dla API, którego chcemy używać, określamy adres URL specyfikacji Swagger (swaggerUrl). Następnie definiowany jest kod klienta wygenerowany i wykonany w postaci zestawu DLL. OpenApiDocument jest używany do asynchronicznego ładowania dokumentu Swaggera z podanego URL, używając FromJsonAsync. Aby zmienić wygenerowany kod klienta, dostosowujemy ustawienia generatora kodu (CSharpClientGeneratorSettings). W tym przykładzie podano nazwę klasy i przestrzeń nazw wygenerowanego kodu klienta.

Z załadowanego dokumentu Swagger konstrukujemy instancję CSharpClientGenerator i używamy jej do generowania kodu klienta. Utworzony kod klienta jest zapisywany w wyznaczonej ścieżce wyjściowej. Reagujemy na wszelkie wyjątki lub błędy, które mogą pojawić się podczas procedury, wyświetlając odpowiednie powiadomienia w konsoli.

NSwag C# (Jak to działa dla deweloperów): Rysunek 2 - Wyjście konsoli z powyższego kodu

Działanie NSwag

Generowanie kodu klienta

NSwag może wykorzystywać specyfikację Swagger do generowania kodu klienckiego w wielu językach, w tym Java, TypeScript i C#. Dzięki temu programiści mogą w prosty sposób korzystać z interfejsów API w swoich aplikacjach.

Generowanie kodu serwera

Wykorzystując specyfikację Swagger jako podstawę, NSwag może również generować kod serwera, taki jak kontrolery ASP.NET Core. Pomaga to w szybkim tworzeniu kodu po stronie serwera do implementacji API.

Tworzenie interaktywnej dokumentacji API

Na podstawie specyfikacji Swagger, NSwag może generować interaktywną dokumentację API, taką jak Swagger UI. Niniejsza dokumentacja zapewnia łatwy w użyciu interfejs do przeglądania i testowania punktów końcowych API.

Tworzenie klas proxy

Aby zintegrować się z interfejsami API opartymi na SOAP, NSwag może generować klasy proxy. Umożliwia to programistom korzystanie z wygenerowanego kodu klienckiego w celu uzyskania dostępu do usług SOAP z poziomu ich aplikacji.

Weryfikacja specyfikacji Swagger

NSwag jest w stanie zweryfikować specyfikacje Swagger, aby upewnić się, że są one zgodne ze standardem OpenAPI/Swagger. Ułatwia to wykrycie wszelkich błędów lub rozbieżności w dokumentacji API.

Integracja NSwag z IronPDF

Programiści mogą usprawnić proces tworzenia dokumentacji API, wykorzystując zalety obu technologii poprzez integrację NSwag z IronPDF. Programiści mogą tworzyć szczegółową dokumentację API sieci .NET, gotową do użycia w trybie offline, która jest łatwo dostępna i którą można udostępniać, używając NSwag do generowania specyfikacji Swagger oraz IronPDF do przekształcania ich w pliki PDF. Poniższe procedury stanowią część procesu integracji:

IronPDF wyróżnia się w konwersji HTML do PDF, zapewniając precyzyjne zachowanie oryginalnych układów i stylów. Idealnie nadaje się do tworzenia plików PDF z treści internetowych, takich jak raporty, faktury i dokumentacja. Dzięki obsłudze plików HTML, adresów URL i surowych ciągów znaków HTML, IronPDF z łatwością tworzy wysokiej jakości dokumenty 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");
    }
}

Zainstaluj IronPDF

  • Uruchom projekt Visual Studio.
  • Wybierz "Narzędzia" > "Menedżer pakietów NuGet" > "Konsola menedżera pakietów".
  • Otwórz wiersz poleceń i w konsoli menedżera pakietów wpisz następujące polecenie:

PM > Install-Package IronPdf

  • Alternatywnie można zainstalować IronPDF za pomocą menedżera pakietów NuGet dla rozwiązań.
  • Znajdź i wybierz pakiet IronPDF z wyników wyszukiwania, a następnie kliknij opcję "Zainstaluj". Visual Studio zajmie się pobraniem i instalacją w Twoim imieniu.

NSwag C# (How It Works For Developers): Figure 3 - Install IronPDF using the Manage NuGet Package for Solution by searching "IronPDF" in the search bar of NuGet Package Manager, then select the project and click on the Install button.

  • NuGet zainstaluje pakiet IronPDF oraz wszelkie zależności wymagane dla Twojego projektu.
  • Po instalacji IronPDF można wykorzystać w swoim projekcie.

Zainstaluj za pośrednictwem strony internetowej NuGet

Aby uzyskać dodatkowe informacje na temat funkcji, kompatybilności i dostępnych plików do pobrania IronPDF, odwiedź stronę IronPDF w serwisie NuGet.

Wykorzystaj bibliotekę DLL do instalacji

Alternatywnie można włączyć IronPDF bezpośrednio do swojego projektu, korzystając z pliku DLL. Aby pobrać plik ZIP zawierający bibliotekę DLL, należy kliknąć link pobierania IronPDF. Rozpakuj plik i dodaj bibliotekę DLL do swojego projektu.

Wdrażanie logiki

Używając NSwag, deweloperzy mogą szybciej tworzyć dokumentację API i kod klienta do użytku z API, stosując CodeGeneration.CSharp w połączeniu z IronPDF. Poniższe kroki stanowią część procesu integracji:

  1. Generowanie kodu klienta: Aby utworzyć kod klienta C# z specyfikacji Swagger, użyj NSwag.CodeGeneration.CSharp. W tym kroku tworzenie klas klientów i metod komunikacji z punktami końcowymi API jest zautomatyzowane.
  2. Użyj NSwag, aby uzyskać dane: Aby wygenerować dokumentację JSON z specyfikacji Swagger, użyj CodeGeneration.CSharp. Na tym etapie formaty żądań/odpowiedzi, techniki uwierzytelniania oraz punkty końcowe klienta API są przekształcane w dokumentację zrozumiałą dla człowieka.
  3. Konwersja JSON do PDF: Aby przekonwertować wygenerowany kod na dokument PDF, użyj IronPDF. Na tym etapie tekst HTML jest konwertowany na dopracowany dokument PDF, który jest gotowy do udostępnienia i dystrybucji.
  4. Ulepszanie dokumentacji PDF: Dodaj więcej treści do dokumentacji PDF za pomocą IronPDF, takich jak nagłówki, stopki, znaki wodne lub unikalne elementy brandingowe. Ten etap daje programistom możliwość dostosowania wyglądu i brandingu dokumentacji PDF do własnych upodobań.
using IronPdf;
using System.Text;
using System.Collections.Generic;

StringBuilder sb = new StringBuilder();

foreach (var item in result)
{
    sb.Append($"<p>Date: {item.Date} F: {item.TemperatureF} C: {item.TemperatureC} Summary: {item.Summary}</p>");
}

var renderer = new HtmlToPdf();
var pdf = renderer.RenderHtmlAsPdf(sb.ToString());
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF generated successfully!");
Console.ReadKey();

Powyższy kod uzyskuje dostęp do pobranych danych z obiektu wynikowego i dodaje pola Date, TemperatureF, TemperatureC, i Summary do akapitów w pętli. Następnie określa ścieżkę do pliku wyjściowego dla PDF, po czym powiadamia użytkownika, że PDF został pomyślnie wygenerowany.

Poniżej znajduje się wynik działania powyższego kodu.

NSwag C# (Jak to działa dla deweloperów): Rysunek 4 - Przykładowe wyjście z powyższego kodu

Wnioski

CodeGeneration technologie NSwag jak CSharp i IronPDF współpracują ze sobą dobrze, aby usprawnić procesy produkcji kodu klienta i dokumentacji API. Programiści mogą przyspieszyć tworzenie rozwiązań opartych na API, zautomatyzować tworzenie dokumentacji API oraz generować profesjonalnie wyglądające publikacje w formacie PDF poprzez integrację tych narzędzi z aplikacjami napisanymi w języku C#. NSwag.CodeGeneration.CSharp z IronPDF oferuje deweloperom kompletne rozwiązanie do efektywnego dokumentowania API i produkcji kodu klienta w C#, niezależnie od tego, czy rozwijają aplikacje desktopowe, webowe, czy też oparte na chmurze.

Pakiet Lite obejmuje Licencję wieczystą, roczną konserwację oprogramowania oraz aktualizację biblioteki. IronPDF oferuje bezpłatną licencję z ograniczeniami dotyczącymi redystrybucji i czasu. Użytkownicy mogą ocenić rozwiązanie w okresie próbnym bez konieczności oglądania znaku wodnego. Aby uzyskac dodatkowe informacje na temat ceny i licencji, prosze zapoznac sie z informacjami licencyjnymi IronPDF. Przejdź do strony bibliotek Iron Software, aby uzyskać dodatkowe informacje na temat bibliotek produktów Iron Software.

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