IRONSOFTWAREHOME
GELIŞTIRICI GÜNCELLEMELERI

Nswag C# (Geliştiriciler İçin Nasıl Çalışır)

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Jacob Mellor
Updated: 21 Nisan 2026

API'ler, farklı yazılım sistemleri ve bileşenleri arasında iletişimi kolaylaştırdığı için bugünün yazılım geliştirme ortamında gereklidir. Geliştiricilerin API'leri verimli bir şekilde kullanabilmesi için kapsamlı ve anlaşılır belgelere ihtiyaç vardır. C# API dokümantasyonu iş akışına yardımcı olabilecek iki etkili araç, NSwag C# ve IronPDF'dir. Bu yazıda, NSwag'in, .NET Core ile API spesifikasyonları oluşturmak ve bu spesifikasyonlardan yüksek kaliteli PDF belgeleri üretmek için IronPDF ile nasıl kullanılacağını tartışacağız.

How to Use NSwag in C#

  1. Swagger UI kullanarak bir RESTful web API oluşturun.
  2. Bir C# konsol uygulaması oluşturun.
  3. NSwag kütüphanesini yükleyin.
  4. Namespace'i içe aktarın ve nesneyi oluşturun.
  5. Swagger JSON'u C# koduna işleyin.
  6. Kodu çalıştırın ve sonucu görüntüleyin.

NSwag'ı Anlama

NSwag, ASP.NET Web API, ASP.NET Core veya diğer .NET çerçeveleri kullanılarak oluşturulan API'ler için Swagger spesifikasyonlarını veya OpenAPI belgelerini oluşturmayı kolaylaştırmak amacıyla geliştirilmiş bir .NET Swagger araç zinciridir.

NSwag'ın Özellikleri

Swagger Özelliklerinin Üretimi

NSwag, denetleyiciler, modeller ve .NET montajları kullanarak otomatik olarak Swagger özellikleri üretebilir. NSwag, API kodunun yapısını inceleyerek, API uç noktalarını, istek/yanıt formlarını, kimlik doğrulama tekniklerini ve daha fazlasını kapsayan kapsamlı belgeler üretir.

.NET Projeleri ile Bağlantı

Geliştiriciler, NSwag'i .NET projelerine entegre ederek Swagger üretimini kolayca gelişim süreçlerine dahil edebilirler. Geliştiriciler, NSwag'i bir .NET Core projesine ekleyerek, her proje derlendiğinde otomatik olarak Swagger özelliklerinin üretilmesini sağlayarak, dokümantasyonun kod tabanı ile güncel tutulmasını sağlayabilirler.

Kişiselleştirme ve Genişletme

NSwag tarafından sunulan geniş özelleştirme olanakları sayesinde geliştiriciler, üretilen Swagger özelliklerini kolayca kendi özel ihtiyaçlarına uyarlayabilirler. Geliştiriciler, ayarları ve açıklamaları kullanarak yanıt kodları, parametre açıklamaları ve rota adlandırma kuralları gibi oluşturulan belgenin birçok bileşeni üzerinde kontrol sahibidirler.

NSwag ile Başlarken

C# Konsol Uygulamasında NSwag Kurulumu

NSwag Temel Sınıf Kütüphanesi, çekirdek, Ayrıntı ve kod üretim alanını içerir ve NuGet'den yüklenebilir olmalıdır. NSwag'ı bir C# uygulamasına entegre ederek kod ve Swagger özellikleri üretmek ve NSwag'in geliştirme sürecinin verimliliğini nasıl artırabileceğini öğrenin.

NSwag C# (Geliştiriciler İçin Nasıl Çalışır): Şekil 1 - Visual Studio Paket Yöneticisi'nde NSwag'ı arayıp yüklemek

Windows Konsol ve Formlarında NSwag Uygulaması

Otomatik istemci üretimi sayesinde, geliştiriciler, masaüstü uygulamalarının içlerinden API'lere erişmek için doğrudan kod üretebilirler NSwag'ı bir Windows masaüstü uygulamasına entegre ederek. Çevrimiçi hizmetlerle veya RESTful API'lerle iletişim kuran masaüstü uygulamaları geliştirirken bu çok yardımcı olabilir.

NSwag, web uygulamalarında, harici API'leri tüketmek için istemci kodunu ve dahili API'ler için belgeler sağlamak amacıyla kullanılabilir. Bu, geliştiricilerin uygulamalarının ön uç ve arka uç bileşenlerini uyumlu tutmalarına yardımcı olur.

NSwag C# Örneği

İşte NSwag kullanarak C# istemci kodu üretmenin nasıl yapılacağını gösteren bir kod örneği:

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

Kullanmak istediğimiz API için, Swagger spesifikasyonunun URL'sini belirtiriz (swaggerUrl). Daha sonra oluşturulan ve bir DLL montajına çalıştırılan istemci kodunu tanımlarız. OpenApiDocument, belirli URL'den Swagger belgesini asenkron olarak yüklemek için kullanılır, FromJsonAsync ile. Üretilen istemci kodunu değiştirmek için, kod üreteç ayarlarını ayarlarız (CSharpClientGeneratorSettings). Bu örnekte, üretilen istemci kodunun sınıf adı ve alanı belirtilmiştir.

Yüklenen Swagger belgesinden, CSharpClientGenerator örneği oluştururuz ve bunu istemci kodu üretmek için kullanırız. Oluşturulan istemci kodu, belirlenen çıkış yoluna kaydedilir. Prosedür sırasında ortaya çıkabilecek herhangi bir istisnaya veya hataya yanıt olarak, ilgili bildirimleri konsolda gösteririz.

NSwag C# (Geliştiriciler İçin Nasıl Çalışır): Şekil 2 - Yukarıdaki koddan çıkan konsol çıktısı

NSwag İşleyişi

İstemci Kodu Üretme

NSwag, bir Swagger spesifikasyonunu kullanarak Java, TypeScript, C# dahil pek çok dilde istemci kodu üretebilir. Bu, geliştiricilerin API'leri uygulamalarında kullanmasını kolaylaştırır.

Sunucu Kodu Üretme

NSwag, bir Swagger spesifikasyonunu temel alarak ASP.NET Core denetleyicileri gibi sunucu kodları da üretebilir. Bu, API implementasyonları için sunucu tarafı kodu hızla kalıp olarak oluşturmaya yardımcı olur.

Etkileşimli API Dokümantasyonu Üretmek

Verilen bir Swagger spesifikasyonu ile NSwag, Swagger UI gibi etkileşimli API dokümantasyonu üretebilir. Bu dokümantasyon, API uç noktalarını keşfetmek ve test etmek için kullanımı kolay bir arayüz sunar.

Proxy Sınıfı Üretmek

NSwag, SOAP tabanlı API'lere entegre etmek için proxy sınıfları üretebilir. Bu, programcılara, uygulamaları içinde SOAP servislerine erişmek için üretilen istemci kodunu kullanmalarına olanak tanır.

Swagger Spesifikasyonlarını Doğrulamak

NSwag, OpenAPI/Swagger standardına uygun olduklarından emin olmak için Swagger spesifikasyonlarını doğrulayabilir. Bu, API dokümantasyonunda hataları veya tutarsızlıkları görmeyi kolaylaştırır.

NSwag ile IronPDF'yi Entegre Etmek

Geliştiriciler, her iki teknolojinin avantajlarından yararlanarak, NSwag ve IronPDF'yi birleştirerek API dokümantasyonu iş akışını iyileştirebilir. NSwag kullanarak Swagger spesifikasyonları oluşturup IronPDF ile PDF'ye dönüştürerek, paylaşılabilir ve çevrimdışı hazır .NET web API dokümantasyonları üretebilir ve geliştiriciler tarafından kullanılabilir. Entegrasyon süreci aşağıdaki prosedürler içerir:

IronPDF, HTML'den PDF'ye dönüşümde mükemmeldir, özgün düzenler ve stillerin hassas bir şekilde korunmasını sağlar. Raporlar, faturalar ve belgeler gibi web tabanlı içeriklerden PDF oluşturmak için mükemmeldir. HTML dosyaları, URL'ler ve ham HTML dizeleri için destekle, IronPDF yüksek kaliteli PDF belgelerini kolayca üretir.

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'i Kurun

  • Visual Studio projesini başlatın.
  • "Araçlar" > "NuGet Paket Yöneticisi" > "Paket Yöneticisi Konsolu" seçeneğini tercih edin.
  • Komut istemcinizi açın ve Paket Yöneticisi Konsoluna aşağıdaki komutu yazın:

PM > Install-Package IronPdf

  • Alternatif olarak, IronPDF'i Çözümler için NuGet Paket Yöneticisi'ni kullanarak da yükleyebilirsiniz.
  • IronPDF paketini arama sonuçlarından keşfedin ve ardından "Yükle" seçeneğine tıklayın. Visual Studio, indirme ve kurulum işlemlerini sizin adınıza halledecektir.

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, IronPDF paketini ve projeniz için gereken tüm bağımlılıkları yükleyecektir.
  • Yüklemeden sonra, projeniz için IronPDF kullanabilirsiniz.

NuGet Web Sitesi Üzerinden Yükleme

IronPDF'nin özellikleri, uyumluluğu ve mevcut indirmelerle ilgili daha fazla bilgi için NuGet üzerindeki IronPDF sayfasını ziyaret edin.

DLL kullanarak Yükleme

Alternatif olarak, IronPDF'yi projeünüze doğrudan DLL dosyasını kullanarak dahil edebilirsiniz. DLL'yi içeren ZIP dosyasını indirmek için IronPDF indirme bağlantısına tıklayın. Dosyayı açın ve DLL'i projenize ekleyin.

Lojiği Uygulamak

NSwag kullanarak, geliştiriciler IronPDF ile birlikte CodeGeneration.CSharp kullanarak, API'leri daha hızlı bir şekilde kullanmak için API dokümantasyonu ve istemci kodu oluşturabilirler. Entegrasyon iş akışı aşağıdaki adımları içerir:

  1. İstemci Kodunu Üret: Swagger spesifikasyonlarından C# istemci kodu oluşturmak için NSwag.CodeGeneration.CSharp kullanın. Üretilen istemci sınıfları ve API uç noktaları ile iletişim kurma yöntemleri bu adımda otomatiktir.
  2. Veri Almak İçin NSwag Kullan: Swagger spesifikasyonlarından JSON dokümantasyonu üretmek için CodeGeneration.CSharp kullanın. Bu aşamada, istek/yanıt formatları, kimlik doğrulama teknikleri ve API istemci uç noktaları insan tarafından okunabilir dokümantasyon haline getirilir.
  3. JSON'u PDF'ye Dönüştür: Üretilen kod sonucunu bir PDF belgesine dönüştürmek için IronPDF kullanın. Bu aşamada, HTML metni, paylaşım ve dağıtımı hazır parlak bir PDF belgesine dönüştürülür.
  4. PDF Dokümantasyonunu Geliştirin: IronPDF kullanarak PDF dokümantasyonuna başlıklar, altbilgiler, filigranlar veya benzersiz marka ekleyerek daha fazla içerik ekleyin. Bu aşama, geliştiricilere PDF dokümantasyonunun görünümünü ve markasını tercihlerine göre kişiselleştirme olanağı tanır.
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();

Yukarıdaki kod, sonuç nesnesinden alınan verileri erişir ve Date, TemperatureF, TemperatureC ve Summary alanlarını bir döngü içinde paragraf olarak ekler. Ardından PDF için çıkış dosya yolunu belirtir ve kullanıcıyı bir PDF'nin başarıyla üretildiği konusunda bilgilendirir.

Aşağıda yukarıdaki koddan çıkan sonuç bulunmaktadır.

NSwag C# (Geliştiriciler İçin Nasıl Çalışır): Şekil 4 - Yukarıdaki koddan örnek çıktı

Sonuç

CodeGeneration gibi NSwag teknolojileri, CSharp ve IronPDF ile birlikte istemci kodu üretimini ve API dokümantasyonu süreçlerini kolaylaştırmak için iyi çalışır. Geliştiriciler, bu araçları C# uygulamalarına entegre ederek, API güdümlü çözümler geliştirme sürecini hızlandırabilir, API dokümantasyonunun oluşturulmasını otomatikleştirebilir ve profesyonel görünümlü PDF yayınlar üretebilirler. NSwag.CodeGeneration.CSharp ile IronPDF, geliştiricilere masaüstü, web veya bulut tabanlı uygulamalar geliştirirken, API'leri etkili bir şekilde dökümante etmek ve C#'ta istemci kodu üretmek için eksiksiz bir çözüm sunar.

Lite paketi, süresiz bir lisans, bir yıl yazılım bakımı ve kütüphaneye yükseltmeyi içerir. IronPDF, yeniden dağıtım ve süre sınırlamalarına sahip ücretsiz lisanslama sunar. Kullanıcılar, deneme süresi boyunca çözümü bir filigran görmeden değerlendirebilir. Fiyat ve lisans hakkında ek bilgi için lütfen IronPDF'in lisans bilgilerine bakınız. Iron Software'in ürün kütüphaneleri hakkında ek bilgi için Iron Software kütüphaneleri sayfasına gidin.

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Teknoloji Direktörü

Jacob Mellor, Iron Software'de Baş Teknoloji Yöneticisidir ve C# PDF teknolojisinde öncü bir mühendisdir. Iron Software'ın ana kod tabanının ilk geliştiricisi olarak, CEO Cameron Rimington ile birlikte şirketin ürün mimarisini 50'den fazla kişilik bir şirkete dönüştürmüştür ve NASA, Tesla ve dünya genelindeki devlet kurumlarına hizmet etmektedir.

...
Daha Fazla Oku

İlgili Makaleler

Key in blue circle

Ücretsiz 30 günlük Deneme Anahtarınızı anında edinin.

Your trial license will be sent to your email address

Herhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.

bullet_checkedKredi kartı veya hesap oluşturma gerektirmezHerhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Ücretsiz Canlı Demo rezervasyonu yapın
Booking Badge

Dünya Çapında Milyonlarca Mühendisin Güvendiği

Iron Software müşteri logoları
Bağımsız Danışmanlık Alın
Aşağıdaki formu doldurun veya sales@ironsoftware.com adresine e-posta gönderin
Bilgileriniz daima gizli kalacaktır.
Dünya Çapında Milyonlarca Mühendisin Güvendiği
Iron Software müşteri logoları
Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez