푸터 콘텐츠로 바로가기
.NET 도움말

Nswag C# (개발자를 위한 작동 방식)

API는 오늘날의 소프트웨어 개발 환경에서 다양한 소프트웨어 시스템과 구성 요소 간의 통신을 용이하게 하기 때문에 필수적입니다. 개발자가 API를 효율적으로 사용하려면 철저하고 이해하기 쉬운 문서가 필요합니다. C# API 문서 워크플로에 도움이 되는 두 가지 효과적인 도구는 NSwag C#과 IronPDF입니다. 이 게시물은 NSwag를 사용하여 .NET Core로 API 사양을 생성하고 이를 사용하여 IronPDF로 이러한 사양에서 고품질 PDF 문서를 생성하는 방법을 논의할 것입니다.

C#에서 NSwag 사용 방법

  1. Swagger UI를 사용하여 RESTful 웹 API를 만듭니다.
  2. C# 콘솔 애플리케이션을 만듭니다.
  3. NSwag 라이브러리를 설치합니다.
  4. 네임스페이스를 가져와 객체를 생성합니다.
  5. Swagger JSON을 C# 코드로 처리합니다.
  6. 코드를 실행하고 결과를 표시합니다.

NSwag 이해하기

.NET Swagger 툴체인인 NSwag는 ASP.NET Web API, ASP.NET Core, 또는 기타 .NET Framework를 사용하여 구축된 API를 위한 Swagger 명세서 또는 OpenAPI 문서를 쉽게 생성할 수 있도록 만들어졌습니다.

NSwag의 기능

Swagger 스펙 생성

NSwag는 컨트롤러, 모델 및 .NET 어셈블리를 사용하여 자동으로 Swagger 스펙을 생성할 수 있습니다. NSwag는 API 코드의 구조를 분석하여 API 엔드포인트, 요청/응답 형식, 인증 방법 등 포괄적인 문서를 생성합니다.

.NET 프로젝트와의 연결성

개발자는 NSwag를 .NET 프로젝트와 통합하여 Swagger 생성을 개발 프로세스에 쉽게 포함시킬 수 있습니다. 개발자는 .NET Core 프로젝트에 NSwag를 추가하여 프로젝트가 빌드될 때마다 Swagger 스펙이 자동으로 생성되도록 함으로써 코드베이스와 함께 문서가 업데이트되도록 할 수 있습니다.

개인화 및 확장성

NSwag가 제공하는 다양한 커스터마이징 옵션을 통해 개발자는 자신만의 고유한 요구를 충족하기 위해 생성된 Swagger 스펙을 쉽게 적응시킬 수 있습니다. 개발자는 구성 설정 및 주석을 통해 생성된 문서의 응답 코드, 매개변수 설명 및 라우트 명명 규칙 등 많은 구성 요소를 제어할 수 있습니다.

NSwag 시작하기

C# 콘솔 앱에서 NSwag 설치

NSwag 베이스 클래스 라이브러리에는 핵심, Annotation 및 코드 생성 네임스페이스가 포함되어 있으며, NuGet에서 설치함으로써 사용 가능합니다. NSwag를 C# 애플리케이션에 통합하여 코드 및 Swagger 스펙을 생성하고, NSwag가 개발 프로세스의 효율성을 어떻게 향상시키는지 설명합니다.

NSwag C# (개발자를 위한 작동 방식): 그림 1 - Visual Studio 패키지 관리자에서 NSwag를 찾아 설치 중

Windows 콘솔 및 폼에서 NSwag 구현

자동 클라이언트 생성을 통해 개발자는 Windows 데스크탑 애플리케이션에 NSwag를 통합하여 API에 액세스하는 코드를 효율적으로 생성할 수 있습니다. 온라인 서비스 또는 RESTful API와 통신하는 데스크탑 애플리케이션을 개발할 때 매우 유용할 수 있습니다.

NSwag는 웹 응용 프로그램에서 내부 API를 위한 API 문서 및 외부 API를 소비하는 클라이언트 코드를 생성하는 데 사용할 수 있습니다. 이는 개발자가 응용 프로그램의 프런트엔드 및 백엔드 구성 요소를 일관되게 유지하는 데 도움이 됩니다.

NSwag C# 예제

다음은 NSwag를 사용하여 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; }
    }
}
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

사용하고자 하는 API의 경우 Swagger 명세의 URL을 지정합니다 (swaggerUrl). 그런 다음 생성된 클라이언트 코드를 정의하고 DLL 어셈블리로 실행합니다. OpenApiDocument은(는) 주어진 URL에서 비동기로 Swagger 문서를 로드하는 데 사용되며, FromJsonAsync을(를) 사용합니다. 생성된 클라이언트 코드를 변경하기 위해 코드 생성기의 설정(CSharpClientGeneratorSettings)을 조정합니다. 이 예제에서 생성된 클라이언트 코드의 클래스 이름과 네임스페이스가 지정됩니다.

로드된 Swagger 문서에서 CSharpClientGenerator의 인스턴스를 생성하고 이를 사용하여 클라이언트 코드를 생성합니다. 생성된 클라이언트 코드는 지정된 출력 경로에 저장됩니다. 프로세스 중 발생할 수 있는 예외나 오류에 대해 콘솔에 관련 알림을 표시합니다.

NSwag C# (개발자를 위한 작동 방식): 그림 2 - 위 코드의 콘솔 출력

NSwag 작동 원리

클라이언트 코드 생성

NSwag는 Swagger 스펙을 사용하여 Java, TypeScript 및 C#을 포함한 여러 언어의 클라이언트 코드를 생성할 수 있습니다. 이는 개발자가 애플리케이션에서 API를 쉽게 사용할 수 있도록 합니다.

서버 코드 생성

Swagger 스펙을 기초로 사용하여 NSwag는 ASP.NET Core 컨트롤러와 같은 서버 코드를 생성할 수도 있습니다. 이는 API 구현을 위한 서버 측 코드를 빠르게 스캐폴드하는 데 도움이 됩니다.

인터랙티브 API 문서 생성

Swagger 스펙이 주어지면 NSwag는 Swagger UI와 같은 인터랙티브 API 문서를 생성할 수 있습니다. 이 문서는 API 엔드포인트를 탐색하고 테스트하기 위한 사용하기 쉬운 인터페이스를 제공합니다.

프록시 클래스 생성

SOAP 기반 API와 통합하기 위해 NSwag는 프록시 클래스를 생성할 수 있습니다. 이를 통해 프로그래머는 생성된 클라이언트 코드를 사용하여 응용 프로그램 내에서 SOAP 서비스를 액세스할 수 있습니다.

Swagger 사양 확인

NSwag는 Swagger 사양이 OpenAPI/Swagger 표준을 따르는지 확인할 수 있는 기능이 있습니다. 이를 통해 API 문서의 오류나 불일치를 쉽게 볼 수 있습니다.

NSwag와 IronPDF 통합

개발자는 NSwag와 IronPDF를 통합하여 두 기술의 장점을 활용하여 API 문서화를 위한 워크플로우를 개선할 수 있습니다. 개발자는 NSwag를 사용하여 Swagger 사양을 생성하고 IronPDF를 사용하여 이를 PDF로 변환하여 쉽게 사용할 수 있는 오프라인 준비된 .NET 웹 API 문서를 생성할 수 있습니다. 통합 프로세스는 다음 절차로 구성됩니다:

IronPDF는 원래 레이아웃과 스타일을 정확히 보존하여 HTML을 PDF로 변환하는 데 탁월합니다. 보고서, 송장 및 설명서와 같은 웹 기반 콘텐츠에서 PDF를 생성하는 데 완벽합니다. HTML 파일, URL 및 원시 HTML 문자열에 대한 지원으로 IronPDF는 고품질의 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");
    }
}
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 설치

  • Visual Studio 프로젝트를 시작하십시오.
  • "도구" > "NuGet 패키지 관리자" > "패키지 관리자 콘솔"을 선택하십시오.
  • 명령 프롬프트를 열고 패키지 관리자 콘솔에서 다음 명령을 입력하세요:
Install-Package IronPdf
  • 또는 솔루션용 NuGet 패키지 관리자를 사용하여 IronPDF를 설치할 수 있습니다.
  • 검색 결과에서 IronPDF 패키지를 탐색하여 선택하고, "설치" 옵션을 클릭하세요. Visual Studio가 대신하여 다운로드 및 설치를 처리합니다.

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 패키지 및 프로젝트에 필요한 모든 종속성을 설치합니다.
  • 설치 후, IronPDF를 프로젝트에 사용할 수 있습니다.

NuGet 웹사이트를 통해 설치

IronPDF의 기능, 호환성 및 사용 가능한 다운로드에 대한 추가 정보를 원하시면 NuGet의 IronPDF 페이지를 방문하세요.

DLL을 사용하여 설치

또한 IronPDF를 DLL 파일을 사용해 직접 프로젝트에 통합할 수 있습니다. DLL이 포함된 ZIP 파일을 다운로드하려면 IronPDF 다운로드 링크를 클릭하세요. 파일을 압축 해제한 후 프로젝트에 DLL을 추가합니다.

논리 구현

NSwag을 활용하여 개발자는 IronPDF와 함께 CodeGeneration.CSharp을 사용해 API를 더 빠르게 사용할 수 있는 API 문서와 클라이언트 코드를 생성할 수 있습니다. 통합 워크플로우는 다음 단계로 구성됩니다:

  1. 클라이언트 코드 생성: Swagger 명세에서 C# 클라이언트 코드를 생성하기 위해 NSwag.CodeGeneration.CSharp을(를) 사용합니다. 이 단계에서는 API 엔드포인트와 통신하기 위한 클라이언트 클래스 및 메서드 생성을 자동화합니다.
  2. NSwag을 활용하여 데이터 가져오기: Swagger 명세에서 JSON 문서를 생성하려면 CodeGeneration.CSharp을(를) 사용합니다. 이 단계에서는 요청/응답 형식, 인증 기법, API 클라이언트 엔드포인트가 사람 읽기 가능한 문서로 작성됩니다.
  3. JSON을 PDF로 변환: 생성된 코드 결과를 PDF 문서로 변환하려면 IronPDF를 사용합니다. 이 단계에서는 HTML 텍스트를 잘 다듬어진 PDF 문서로 변환하여 공유 및 배포 준비를 완료합니다.
  4. PDF 문서 개선: IronPDF를 사용하여 머리글, 바닥글, 워터마크 또는 독특한 브랜드와 같은 콘텐츠를 PDF 문서에 추가합니다. 이 단계는 개발자가 개인 취향에 맞게 PDF 문서의 외관과 브랜드를 개인화할 수 있는 기능을 제공합니다.
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

위 코드는 결과 객체에서 가져온 데이터를 엑세스하여 필드 Date, TemperatureF, TemperatureC, 그리고 Summary을(를) 루프 내에서 문단에 추가합니다. 그런 다음 PDF의 출력 파일 경로를 지정하고, PDF가 성공적으로 생성되었음을 사용자에게 알립니다.

아래는 위의 코드의 결과입니다.

NSwag C# (개발자를 위한 작동 방식): 그림 4 - 위 코드의 예제 출력

결론

CodeGeneration NSwag 기술은 CSharp 및 IronPDF와 잘 함께 작동하여 클라이언트 코드 생산 및 API 문서화 프로세스를 간소화합니다. 개발자는 이러한 도구를 C# 응용 프로그램에 통합하여 API 중심 솔루션의 개발 속도를 높이고, API 문서 생성을 자동화하며, 전문적인 PDF 출판물을 생성할 수 있습니다. IronPDF와 함께 NSwag.CodeGeneration.CSharp을 사용하면 개발자는 데스크톱, 웹, 클라우드 기반 앱을 개발하든 C#에서 효율적으로 API를 문서화하고 클라이언트 코드를 생성할 수 있는 완전한 솔루션을 제공합니다.

Lite 번들에는 영구 라이선스, 1년 간의 소프트웨어 유지보수 및 라이브러리 업그레이드가 포함됩니다. IronPDF는 재배포 및 시간 제한이 있는 무료 라이선스를 제공합니다. 사용자는 체험 기간 동안 워터마크를 보지 않고 솔루션을 평가할 수 있습니다. 가격 및 라이선스에 대한 추가 정보는 IronPDF의 라이선스 정보를 참조하세요. Iron Software의 제품 라이브러리에 대한 추가 정보는 Iron Software 라이브러리 페이지를 방문하세요.

자주 묻는 질문

NSwag가 C#에서 API 사양 생성에 어떻게 도움이 될 수 있습니까?

NSwag는 .NET Core 프로젝트에서 Swagger 또는 OpenAPI 문서로 알려진 API 사양을 자동으로 생성할 수 있습니다. 이를 통해 API 문서가 코드베이스와 항상 동기화되도록 보장합니다.

Swagger 사양을 PDF 문서로 변환하는 과정은 무엇입니까?

Swagger 사양을 PDF 문서로 변환하려면 IronPDF를 사용할 수 있습니다. 먼저 NSwag를 사용하여 Swagger 사양을 생성한 다음, IronPDF를 활용하여 이러한 사양의 HTML 콘텐츠를 고품질 PDF로 변환할 수 있습니다.

.NET 프로젝트에 NSwag를 통합하는 방법은 무엇입니까?

.NET 프로젝트에 NSwag를 통합하는 것은 NuGet을 통해 NSwag 라이브러리를 설치하고, 빌드 과정 중에 Swagger 사양을 생성하도록 구성하며, 생성된 사양을 문서화 및 코드 생성에 사용하는 것입니다.

NSwag가 Swagger 사양에서 클라이언트 및 서버 코드를 모두 생성할 수 있습니까?

네, NSwag는 C#, Java, TypeScript와 같은 언어로 클라이언트 코드를 생성할 수 있으며, ASP.NET Core 컨트롤러 등의 서버 사이드 코드도 단일 Swagger 사양에서 생성할 수 있습니다.

IronPDF는 API 문서화 워크플로우를 어떻게 향상시킵니까?

IronPDF는 개발자들이 HTML 기반의 API 문서를 전문가 수준의 공유 가능한 PDF 문서로 변환하여, 정보를 오프라인에서도 접근할 수 있게 함으로써 API 문서화 워크플로우를 향상시킵니다.

Visual Studio 프로젝트에서 IronPDF를 사용하려면 어떤 단계가 필요합니까?

Visual Studio 프로젝트에서 IronPDF를 사용하려면 NuGet 패키지 관리자에서 IronPDF를 검색하고 '설치'를 클릭하거나, 패키지 관리자 콘솔에서 Install-Package IronPdf 명령어를 사용하여 설치합니다.

NSwag를 사용하여 대화형 API 문서를 어떻게 생성할 수 있습니까?

NSwag는 대화형 API 문서를 생성하여, 브라우저에서 API 엔드포인트를 탐색하고 테스트할 수 있는 사용자 친화적인 인터페이스를 제공하는 Swagger UI를 제작할 수 있습니다.

API 문서화를 위해 NSwag를 사용하는 이점은 무엇입니까?

NSwag는 API 문서 생성 작업을 자동화하여, 항상 코드베이스와 동기화되도록 보장합니다. 또한 대화형 문서 및 클라이언트 측 코드 생성도 지원하여 개발 과정을 간소화합니다.

IronPDF는 HTML 콘텐츠와 함께 어떻게 PDF를 생성합니까?

IronPDF는 CSS와 JavaScript를 포함한 HTML 콘텐츠를 PDF 형식으로 변환하는 렌더링 엔진을 사용하여 웹 기반 콘텐츠로부터 정확하고 오프라인 준비가 된 문서를 생성하는 데 이상적입니다.

제이콥 멜러, 팀 아이언 최고기술책임자
최고기술책임자

제이콥 멜러는 Iron Software의 최고 기술 책임자(CTO)이자 C# PDF 기술을 개척한 선구적인 엔지니어입니다. Iron Software의 핵심 코드베이스를 최초로 개발한 그는 창립 초기부터 회사의 제품 아키텍처를 설계해 왔으며, CEO인 캐머런 리밍턴과 함께 회사를 NASA, 테슬라, 그리고 전 세계 정부 기관에 서비스를 제공하는 50명 이상의 직원을 보유한 기업으로 성장시켰습니다.

제이콥은 맨체스터 대학교에서 토목공학 학사 학위(BEng)를 최우등으로 취득했습니다(1998~2001). 1999년 런던에서 첫 소프트웨어 회사를 설립하고 2005년 첫 .NET 컴포넌트를 개발한 후, 마이크로소프트 생태계 전반에 걸쳐 복잡한 문제를 해결하는 데 전문성을 발휘해 왔습니다.

그의 대표 제품인 IronPDF 및 Iron Suite .NET 라이브러리는 전 세계적으로 3천만 건 이상의 NuGet 설치 수를 기록했으며, 그의 핵심 코드는 전 세계 개발자들이 사용하는 다양한 도구에 지속적으로 활용되고 있습니다. 25년의 실무 경험과 41년의 코딩 전문성을 바탕으로, 제이콥은 차세대 기술 리더들을 양성하는 동시에 기업 수준의 C#, Java, Python PDF 기술 혁신을 주도하는 데 주력하고 있습니다.

아이언 서포트 팀

저희는 주 5일, 24시간 온라인으로 운영합니다.
채팅
이메일
전화해