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

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

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; }
    }
}
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 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");
    }
}
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'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:
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();
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 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.

Sıkça Sorulan Sorular

NSwag, C#'ta API spesifikasyonlarının oluşturulmasına nasıl yardımcı olabilir?

NSwag, .NET Core projelerinden Swagger veya OpenAPI belgeleri olarak bilinen API spesifikasyonlarını otomatik olarak oluşturabilir. Bu, API dokümantasyonunun kod tabanı ile her zaman 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'yi kullanabilirsiniz. İlk olarak NSwag kullanarak Swagger spesifikasyonunu oluşturun, ardından bu spesifikasyonların HTML içeriğini IronPDF kullanarak yüksek kaliteli PDF'lere dönüştürün.

NSwag, bir .NET projesine nasıl entegre edilebilir?

NSwag'ı bir .NET projesine entegre etmek, NuGet aracılığıyla NSwag kütüphanesini yüklemeyi, oluşturma süreci boyunca Swagger spesifikasyonları üretmesini yapılandırmayı ve üretilen spesifikasyonları dokümantasyon ve kod üretimi için kullanmayı içerir.

NSwag bir Swagger spesifikasyonundan hem istemci hem de sunucu kodu oluşturabilir mi?

Evet, NSwag C#, Java ve TypeScript gibi dillerde istemci kodunu, ve ASP.NET Core denetçileri gibi sunucu kodunu bir Swagger spesifikasyonundan oluşturabilir.

IronPDF, API dokümantasyon iş akışını nasıl artırır?

IronPDF, HTML tabanlı API dokümantasyonunu profesyonel, paylaşılabilir PDF belgelerine dönüştürerek API dokümantasyon iş akışını artırır, bilgilerin çevrimdışı erişilebilir olmasını sağlar.

IronPDF'nin bir Visual Studio projesinde kullanılabilmesi için gereken adımlar nelerdir?

IronPDF'nin bir Visual Studio projesinde kullanılması için, NuGet Paket Yöneticisi aracılığıyla IronPDF'yi yükleyin, veya Paket Yöneticisi Konsolu üzerinden Install-Package IronPdf komutunu kullanın.

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

NSwag, bir Swagger UI oluşturarak etkileşimli API dokümantasyonu üretebilir, bu da tarayıcıda API uç noktalarını keşfetmek ve test etmek için kullanıcı dostu bir arayüz sağlar.

API dokümantasyonu için NSwag kullanmanın faydaları nelerdir?

NSwag, API dokümantasyonunun kod tabanı ile her zaman güncel olmasını sağlar ve etkileşimli dokümantasyon ve istemci tarafı kod oluşturulmasını destekler, geliştirme sürecini hızlandırır.

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

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

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 ...

Daha Fazla Oku

Iron Destek Ekibi

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