Altbilgi içeriğine atla
.NET YARDıM

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

API'ler, çeşitli yazılım sistemleri ve bileşenleri arasında iletişimi sağladıkları için günümüz yazılım geliştirme ortamında esastır. Geliştiricilerin API'leri verimli bir şekilde kullanabilmesi için kapsamlı ve anlaşılır belgeler gerekmektedir. C# API belgeleme akışına yardımcı olabilecek iki etkili araç NSwag C# ve IronPDF'dir. Bu yazı, NSwag kullanarak API spesifikasyonları üretmeyi ve IronPDF kullanarak bu spesifikasyonlardan yüksek kaliteli PDF belgeleri üretmeyi tartışacaktır.

NSwag C# ile Nasıl Kullanılır

  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. Ad alanını 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österin.

NSwag Anlama

.NET Swagger araç zinciri olarak adlandırılan 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 için oluşturulmuştur.

NSwag Özellikleri

Swagger Specs Üretimi

NSwag, Swagger özelliklerini otomatik olarak üretmek için denetleyiciler, modeller ve .NET derlemeleri kullanabilir. NSwag, API kodunun yapısını inceleyerek API uç noktaları, istek/yanıt formları, kimlik doğrulama teknikleri ve daha fazlasını kapsayan kapsamlı belgeler üretir.

.NET Projeleriyle Bağlantı

Geliştiriciler, NSwag'i .NET projeleri ile entegre ederek Swagger üretimini geliştirme süreçlerine kolayca dahil edebilirler. Geliştiriciler, NSwag'i bir .NET Core projesine ekleyerek ve her derleme esnasında Swagger özelliklerini otomatik olarak üreterek, belgenin kod tabanıyla güncellenmesini sağlayabilirler.

Kişiselleştirme ve Genişletme

NSwag tarafından sunulan geniş özelleştirme olanakları ile geliştiriciler, üretilen Swagger özelliklerini kendilerine özgü ihtiyaçlarını karşılayacak şekilde kolayca adapte edebilirler. Geliştiriciler, konfigürasyon ayarları ve anotasyonlarla üretilen belgenin birçok bileşenini kontrol edebilir, yanıt kodları, parametre açıklamaları ve rota adlandırma kuralları gibi.

NSwag ile Başlarken

C# Konsol Uygulamasında NSwag Kurulumu

NSwag Temel Sınıf Kütüphanesi, merkez, Anotasyon ve kod üretim ad alanını içerir ve NuGet'ten yüklenerek erişilebilir olmalıdır. NSwag'i bir C# uygulamasına entegre ederek kod üretme ve Swagger özellikleri oluşturmayı ve NSwag'in geliştirme sürecinin verimliliğini nasıl artırabileceğini inceleyin.

NSwag C# (Geliştiriciler için Nasıl Çalışır): Şekil 1 - Visual Studio Paket Yöneticisi'nde NSwag'a göz atmak ve yüklemek

Windows Konsol ve Formlarda NSwag Uygulaması

Otomatik müşteri üretimi sayesinde, geliştiriciler, NSwag'i bir Windows masaüstü uygulamasına entegre ederek masaüstü uygulamalarından doğrudan API'lere erişmek için kod üretebilir. Çevrimiçi hizmetlerle veya RESTful API'larla iletişim kuran masaüstü uygulamaları geliştirirken çok faydalı olabilir.

NSwag, web uygulamalarında dahili API'ler için API belgeleri ve harici API'lerin tüketimi için müşteri kodu üretmek için kullanılabilir. Bu, geliştiricilerin uygulamalarının ön uç ve arka uç bileşenlerini tutarlı tutmasına yardımcı olur.

NSwag C# Örneği

İşte C# müşteri kodunu üretmek için NSwag kullanmanın 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; }
    }
}
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; }
    }
}
Imports NSwag.CodeGeneration.CSharp
Imports NSwag
Imports System.Reflection
Imports System.CodeDom.Compiler
Imports Microsoft.CodeAnalysis
Imports System.Net.Http
Imports System.IO
Imports System.Collections.Generic
Imports System.Threading.Tasks

Friend Class Program
	Shared Async Function Main(ByVal args() As String) As Task
		Using wclient = New System.Net.WebClient()
			' Create JSON file data from the Swagger .NET Core web API
			Dim document = Await OpenApiDocument.FromJsonAsync(wclient.DownloadString("http://localhost:5013/swagger/v1/swagger.json"))
			Dim settings = New CSharpClientGeneratorSettings With {
				.ClassName = "Weather",
				.CSharpGeneratorSettings = { [Namespace] = "Demo" }
			}

			Dim generator = New CSharpClientGenerator(document, settings)
			Dim code = generator.GenerateFile()
			Dim assembly = CompileCode(code)
			Dim clientType = assembly.GetType("Demo.WeatherClient") ' Replace with your actual client class name
			Using httpClient As New HttpClient()
				Dim client = DirectCast(Activator.CreateInstance(clientType, httpClient), IApiClient)
				Dim result = Await client.GetWeatherForecastAsync()
				For Each item In result
					Console.WriteLine($"Date: {item.Date} F: {item.TemperatureF} C: {item.TemperatureC} Summary: {item.Summary}")
				Next item
			End Using
		End Using
	End Function

	Private Shared Function CompileCode(ByVal code As String) As System.Reflection.Assembly
		Using memoryStream As New MemoryStream()
			Dim assemblyPath = Path.GetDirectoryName(GetType(Object).Assembly.Location)
			Dim references = New List(Of MetadataReference) From {MetadataReference.CreateFromFile(GetType(Object).GetTypeInfo().Assembly.Location), MetadataReference.CreateFromFile(Path.Combine(assemblyPath, "Microsoft.AspNetCore.Mvc.dll")), MetadataReference.CreateFromFile(Path.Combine(assemblyPath, "System.Private.CoreLib.dll"))}

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

			Dim emitResult = compilation.Emit(memoryStream)
			If Not emitResult.Success Then
				Console.WriteLine("Compilation errors:")
				For Each diagnostic In emitResult.Diagnostics
					Console.WriteLine(diagnostic)
				Next diagnostic
				Return Nothing
			End If
			memoryStream.Seek(0, SeekOrigin.Begin)
			Return System.Reflection.Assembly.Load(memoryStream.ToArray())
		End Using
	End Function

	Public Interface IApiClient
		' Replace with your actual method name and return type
		Function GetWeatherForecastAsync() As Task(Of List(Of WeatherForecast))
	End Interface

	Public Class WeatherForecast
		Public Property [Date]() As DateTime
		Public Property TemperatureC() As Integer
		Public Property TemperatureF() As Integer
		Public Property Summary() As String
	End Class
End Class
$vbLabelText   $csharpLabel

Kullanmak istediğimiz API için, Swagger spesifikasyonunun URL'sini (swaggerUrl) belirtiriz. Daha sonra, üretilen müşteri kodunun yürütülmesi ve bir DLL montajında tanımlanması yapılır. OpenApiDocument, verilen URL'den Swagger belgesini eşzamanlı olarak yüklemek için FromJsonAsync kullanır. Üretilen istemci kodunu değiştirmek için, kod üreticisinin ayarlarını (CSharpClientGeneratorSettings) ayarlarız. Bu örnekte, üretilen müşteri kodunun sınıf adı ve ad alanı belirtilir.

Yüklenen Swagger belgesinden, CSharpClientGenerator örneği oluştururuz ve istemci kodunu üretmek için kullanırız. Oluşturulan müşteri kodu belirtilen çıktı yoluna kaydedilir. İşlem sırasında meydana gelebilecek herhangi bir istisna veya hataya yanıt veririz, ilgili bildirimleri konsolda gösteririz.

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

NSwag İşlevi

Müşteri Kodu Üretimi

NSwag, Swagger spesifikasyonunu kullanarak Java, TypeScript ve C# gibi birçok dilde müşteri kodu üretebilir. Bu, geliştiricilerin uygulamalarında API'leri kullanmasını basit hale getirir.

Sunucu Kodu Üretimi

NSwag, swagger spesifikasyonunu bir temel olarak kullanarak, ASP.NET Core controller'ları gibi sunucu kodu da üretebilir. Bu, API uygulamaları için sunucu tarafı kodunu hızlıca oluşturmayı sağlar.

Etkileşimli API Belgeleri Üretimi

Verilen bir Swagger spesifikasyonuna göre, NSwag etkileşimli API belgeleri üretebilir, örneğin Swagger UI. Bu belgeler, API uç noktalarını keşfetmek ve test etmek için kullanıcı dostu bir arayüz sunar.

Proxy Sınıfları Üretimi

SOAP tabanlı API'lerle entegre olmak için, NSwag proxy sınıfları üretebilir. Bu, programcıların uygulamalarından SOAP hizmetlerine erişmek için üretilen müşteri kodunu kullanmasını sağlar.

Swagger Spesifikasyonlarını Doğrulama

NSwag, OpenAPI/Swagger standardına uygun olup olmadıklarını sağlamak için Swagger spesifikasyonlarını doğrulayabilir. Bu, API belgelerindeki hataları veya tutarsızlıkları görmeyi kolaylaştırır.

IronPDF ile NSwag Entegrasyonu

Geliştiriciler, NSwag'i IronPDF ile birleştirerek her iki teknolojinin avantajlarından yararlanarak API belgeleri iş akışını iyileştirebilir. Geliştiriciler, NSwag kullanarak Swagger spesifikasyonlarını ve IronPDF'i onları PDF'lere dönüştürmek için kullanarak kolayca erişilebilir ve paylaşılabilir, çevrimdışı hazır .NET web API belgeleri üretebilirler. Entegrasyon süreci aşağıdaki adımlar içerir:

HTML'den PDF'ye dönüştürmede IronPDF, özgün düzenlerin ve tarzların hassas korunmasını sağlamakta üstünlük sağlar. Web tabanlı içeriklerden, örneğin raporlar, faturalar ve belgeler gibi PDF'ler oluşturmak için mükemmeldir. HTML dosyaları, URL'ler ve ham HTML dizeleri desteği ile IronPDF kolaylıkla yüksek kaliteli PDF belgeler ü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");
    }
}
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
$vbLabelText   $csharpLabel

IronPDF'yi Yükleyin

  • Visual Studio projesini başlatın.
  • "Araçlar" > "NuGet Paket Yöneticisi" > "Paket Yöneticisi Konsolu"nu seçin.
  • Komut istemcinizi açın ve Paket Yöneticisi Konsolunda aşağıdaki komutu yazın:
Install-Package IronPdf
  • Alternatif olarak, Çözümler için NuGet Paket Yöneticisi'ni kullanarak IronPDF'i yükleyebilirsiniz.
  • Arama sonuçlarında IronPDF paketine göz atın ve ardından "Install" 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, projeniz için gereken IronPDF paketini ve diğer bağımlılıkları yükleyecektir.
  • Yükleme tamamlandıktan sonra, projenizde IronPDF kullanılabilir.

NuGet Web Sitesi Üzerinden Kurulum

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

DLL Kullanarak Kurulum

Alternatif olarak, IronPDF'i DLL dosyasını kullanarak doğrudan projenize entegre edebilirsiniz. DLL 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.

Mantığın Uygulanması

NSwag kullanarak geliştiriciler, IronPDF ile birlikte CodeGeneration.CSharp kullanarak API belgelendirmesi ve istemci kodu oluşturmayı hızlı bir şekilde yapabilir. Entegrasyon iş akışının bir parçası olarak aşağıdaki adımlar yer alır:

  1. İstemci Kodunu Üret: Swagger spesifikasyonlarından C# istemci kodu oluşturmak için NSwag.CodeGeneration.CSharp kullanın. API uç noktalarıyla iletişim için müşteri sınıfları ve yöntemlerinin oluşturulması bu aşamada otomatikleştirilir.
  2. Veri Almak için NSwag'ı Kullanın: Swagger spesifikasyonlarından JSON belgeleri oluşturmak için CodeGeneration.CSharp kullanın. Bu aşamada, istek/yanıt formatları, kimlik doğrulama teknikleri ve API müşteri uç noktaları insan tarafından okunabilir belgelere dönüştürülür.
  3. JSON'u PDF'e Dönüştür: Üretilen kod sonucunu PDF belgesine dönüştürmek için IronPDF kullanın. Bu aşamada, HTML metni paylaşım ve dağıtıma hazır, cilalı bir PDF belgesine dönüştürülür.
  4. PDF Belgelemesini İyileştir: IronPDF kullanarak PDF belgelemesine başlıklar, altbilgiler, filigranlar veya benzersiz markalama gibi daha fazla içerik ekleyin. Bu aşama, geliştiricilere PDF belgelemesinin görünümünü ve markalamasını tercihleri doğrultusunda kişiselleştirme olanağı sağlar.
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();
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();
Imports IronPdf
Imports System.Text
Imports System.Collections.Generic

Private sb As New StringBuilder()

For Each item In result
	sb.Append($"<p>Date: {item.Date} F: {item.TemperatureF} C: {item.TemperatureC} Summary: {item.Summary}</p>")
Next item

Dim renderer = New HtmlToPdf()
Dim pdf = renderer.RenderHtmlAsPdf(sb.ToString())
pdf.SaveAs("output.pdf")
Console.WriteLine("PDF generated successfully!")
Console.ReadKey()
$vbLabelText   $csharpLabel

Yukarıdaki kod, sonuç nesnesinden alınan verilere erişir ve ardından Date, TemperatureF, TemperatureC ve Summary alanlarını döngü içinde paragraflara ekler. Ardından PDF için çıktı dosya yolunu belirtir ve kullanıcıya bir PDF'nin başarıyla oluşturulduğunu bildirir.

Aşağıda yukarıdaki kodun sonucundan elde edilen çıktı bulunmaktadır.

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

Sonuç

CodeGeneration NSwag teknolojileri, CSharp ve IronPDF gibi, istemci kodu üretimini ve API dokümantasyonu süreçlerini basitleştirmek için bir arada iyi çalışır. Geliştiriciler, bu araçları C# uygulamalarına entegre ederek API odaklı çözümler oluşturmada hız kazanabilir, API belgelerinin oluşturulmasını otomatikleştirebilir ve profesyonel görünümlü PDF yayınları üretebilir. NSwag.CodeGeneration.CSharp ile IronPDF, geliştiricilere masaüstü, web veya bulut tabanlı uygulamalar geliştiriyor olsunlar, C# dilinde istemci kodu üretimi ve verimli API dokümantasyonu için eksiksiz bir çözüm sunar.

Lite paketi, süresiz bir lisans, bir yıllık yazılım bakımı ve kütüphaneye bir güncelleme içerir. IronPDF, yeniden dağıtım ve zaman kısıtlamaları ile ücretsiz lisanslama sunar. Kullanıcılar, çözümü deneme süresi boyunca filigranla değerlendirebilirler. Fiyat ve lisans ile ilgili ek bilgiler için IronPDF'nin lisans bilgilerini inceleyin. Iron Software ürün kütüphaneleri hakkında ek bilgi için Iron Software kütüphaneler sayfasına gidin.

Sıkça Sorulan Sorular

NSwag, C#'te API spesifikasyonları oluşturma konusunda nasıl yardımcı olabilir?

NSwag, .NET Core projelerinden, Swagger veya OpenAPI belgeleri olarak bilinen API spesifikasyonlarını otomatik olarak oluşturabilir. Bu, API dökümantasyonunun her zaman kod tabanı ile senkronize olmasını sağlar.

Swagger spesifikasyonlarını PDF belgelerine dönüştürme süreci nedir?

Swagger spesifikasyonlarını PDF belgelerine dönüştürmek için IronPDF'i kullanabilirsiniz. Öncelikle, NSwag ile Swagger spesifikasyonunu oluşturun, ardından bu spesifikasyonlarının HTML içeriğini IronPDF kullanarak yüksek kaliteli PDF'lere dönüştürün.

.NET projesine NSwag'ı nasıl entegre edebilirim?

.NET projesine NSwag entegrasyonu, NSwag kütüphanesinin NuGet üzerinden kurulmasını, derleme sürecinde Swagger spesifikasyonları oluşturmak üzere yapılandırılmasını ve belgeler ile kod üretimi için üretilen spesifikasyonların kullanılmasını içerir.

NSwag, bir Swagger spesifikasyonundan hem istemci hem de sunucu kodu üretebilir mi?

Evet, NSwag bir Swagger spesifikasyonundan C#, Java ve TypeScript gibi dillerde istemci kodu ve ASP.NET Core controller'lar gibi sunucu tarafı kodu üretebilir.

IronPDF, API dokümantasyon iş akışını nasıl geliştirir?

IronPDF, geliştiricilerin HTML tabanlı API dokümantasyonunu profesyonel, paylaşılabilir PDF belgelere dönüştürmelerine olanak tanıyarak çevrimdışı erişilebilir hale getirir.

Visual Studio projesinde IronPDF kullanmak için hangi adımlar gereklidir?

Visual Studio projesinde IronPDF kullanmak için, NuGet Paket Yöneticisi üzerinden IronPDF'yi arayarak 'Yükle'ye tıklayarak veya Paket Yöneticisi Konsolu'nda Install-Package IronPdf komutunu kullanarak yükleyin.

NSwag kullanarak etkileşimli API dokümantasyonu nasıl oluşturulur?

NSwag, tarayıcıda doğrudan API uç noktalarını keşfetmek ve test etmek için kullanıcı dostu bir arayüz sağlayan bir Swagger UI üreterek etkileşimli API dokümantasyonu oluşturabilir.

NSwag ile API dokümantasyonu kullanmanın faydaları nelerdir?

NSwag, dokümantasyonun her zaman kod tabanına uygun şekilde güncel olmasını sağlayarak API dokümantasyonunu otomatikleştirir. Ayrıca etkileşimli dokümantasyon ve istemci tarafı kodu oluşturmayı destekleyerek geliştirme sürecini hızlandırır.

IronPDF, HTML içeriğiyle nasıl çalışarak PDF'ler oluşturur?

IronPDF, HTML içeriğini, CSS ve JavaScript dahil, kendi rendering motorunu kullanarak PDF formatına dönüştürür, bu da web tabanlı içeriklerden kesin, çevrimdışı hazır belgeler oluşturmaya uygun hale getirir.

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Chief Technology Officer

Jacob Mellor, Iron Software'in Teknoloji Müdürü ve C# PDF teknolojisinin öncüsü olan vizyoner bir mühendis. Iron Software’in temel kod tabanının ilk geliştiricisi olarak, şirketin ürün mimarisini kuruluşundan bu yana şekillendirdi ve CEO Cameron Rimington ile birlikte NASA, Tesla ve ...

Daha Fazlasını Oku

Iron Destek Ekibi

Haftanın 5 günü, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara