跳至頁尾內容
開發者更新

Nswag C#(對於開發者的運行原理)

API 在現今的軟體開發環境中至關重要,因為它們促進了各種軟體系統和元件之間的溝通。 為了讓開發者有效地使用 API,必須有完整且易於理解的文件。 兩個可幫助 C# API 文件工作流程的有效工具是 NSwag C# 和 IronPDF。 本文將討論如何使用 NSwag 生成API 規範,配合 .NET Core並使用 IronPDF 將這些規範產生高品質的 PDF 文件。

How to Use NSwag in C

  1. 使用 Swagger UI 建立 RESTful Web API。
  2. 建立 C# 控制台應用程式。
  3. 安裝 NSwag 程式庫。
  4. 匯入命名空間並建立物件。
  5. 將 Swagger JSON 處理為 C# 程式碼。
  6. 執行程式並顯示結果。

了解 NSwag

一個叫做 NSwag 的 .NET Swagger 工具鏈被建立出來,以便於為使用 ASP.NET Web API、ASP.NET Core 或其他 .NET 架構構建的 API 建立 Swagger 規範或 OpenAPI 文件。

NSwag 的特點

生成 Swagger 規範

控制器、模型和 .NET 程式集都可以由 NSwag 自動生成 Swagger 規範。 NSwag 通過檢查 API 程式碼的結構生成涵蓋 API 端點、請求/回應格式、身份驗證技術等的全面文件。

與 .NET 專案的連接

開發者可以通過將 NSwag 與 .NET 專案整合,輕鬆地將 Swagger 生成納入他們的開發過程。 開發者可以通過將 NSwag 新增到 .NET Core 專案,以確保文件隨著程式碼基礎更新,這將在每次構建專案時自動生成 Swagger 規範。

個性化和擴展

NSwag 提供的多種自訂選項,讓開發者可以輕鬆地調整生成的 Swagger 規範以滿足他們的獨特需求。 開發者可以通過配置設定和註釋控制生成文件的許多組件,包括響應程式碼、參數解釋和路由命名規則。

開始使用 NSwag

在 C# 控制台應用中設置 NSwag

NSwag 基礎類函式庫包括核心、註釋和程式碼生成命名空間,應該可以透過從 NuGet 安裝獲取。 將 NSwag 整合到 C# 應用程式中以生成程式碼和 Swagger 規範,以及 NSwag 如何改善開發過程的效率。

NSwag C#(開發者如何工作):圖 1 - 在 Visual Studio 套件管理器中瀏覽 NSwag 並安裝

在 Windows 控制台和表單中實作 NSwag

透過自動化客戶端生成,開發者可以有效地從桌面應用程式中整合 NSwag 生成存取 API 的程式碼。 在開發與在線服務或 RESTful API 通信的桌面應用程式時,這可能非常有幫助。

NSwag 可以在 Web 應用程式中用來生成內部 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 可以生成互動式 API 文件,如 Swagger UI。 此文件提供了一個易於使用的介面,用於瀏覽和測試 API 端點。

生成代理類

要與基於 SOAP 的 API 整合,NSwag 可以生成代理類。 這使得程式員能夠使用生成的客戶端程式碼從應用程式內部存取 SOAP 服務。

驗證 Swagger 規範

NSwag 能夠驗證 Swagger 規範,以確保它們遵循 OpenAPI/Swagger 標準。 這使得更容易看到 API 文件中的任何錯誤或不一致之處。

將 NSwag 與 IronPDF 整合

開發者可以藉由將 NSwag 與 IronPDF 結合起來,利用這兩個技術的優勢來改善 API 文件的工作流程。 開發者可以藉由使用 NSwag 生成 Swagger 規範和IronPDF 將其轉換為 PDF,生成完整、可離線使用的 .NET Web 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 功能、相容性和可用下載的更多資訊,請存取IronPDF 在 NuGet 上的頁面

使用DLL安裝

或者,您可以通過其 DLL 檔案直接將 IronPDF 整合到您的專案中。要下載包含 DLL 的 ZIP 檔,請點擊IronPDF 下載連結。 解壓縮文件並將DLL新增到您的專案中。

實施邏輯

通過使用 NSwag,開發者可以更快地使用 CodeGeneration.CSharp 結合 IronPDF 生成 API 文件和客戶端程式碼。 整合工作流程包括以下步驟:

  1. 生成客戶端程式碼:使用 NSwag.CodeGeneration.CSharp 從 Swagger 規範建立 C# 客戶端程式碼。 客戶端類和方法的建立過程被自動化,以便與 API 端點通信。
  2. 使用 NSwag 獲取資料:使用 CodeGeneration.CSharp 從 Swagger 規範生成 JSON 文件。 在此階段,請求/回應格式、身份驗證技術和 API 客戶端端點被製作成人類可讀的文件。
  3. 將 JSON 轉換為 PDF:使用 IronPDF,將生成的程式碼結果轉換為 PDF 文件。 在這個階段,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

上面的程式碼從結果物件中獲取檢索到的資料,並在迴圈中將 TemperatureCSummary 字段附加到段落中。然後指定 PDF 的輸出檔案路徑,並通知使用者已成功生成 PDF。

以下是上面程式碼的結果。

NSwag C#(開發者如何工作):圖 4 - 上面程式碼的例子輸出

結論

CodeGenerationCSharp 和 IronPDF 這樣的 NSwag 技術協作良好,可以簡化客戶端程式碼生產和 API 文件流程。 開發者可以透過將這些工具整合到 C# 應用程式中,加速 API 驅動解決方案的開發,並自動化 API 文件的建立,生成專業的 PDF 出版物。 NSwag.CodeGeneration.CSharp 使用 IronPDF 提供開發者有效地記錄 API 和在 C# 中生成客戶程式碼的完整解決方案,無論他們是在開發桌面、Web 還是基於雲端的應用程式。

Lite 套裝包含一個永久授權、一年的軟體維護和進行程式庫升級。 IronPDF提供免費授權,但在再分發和時間上有限制。使用者可以在試用期間不必查看浮水印來評估此解決方案。 有關價格和授權的詳細資訊,請參閱IronPDF 授權資訊。 若要獲取更多關於 Iron Software 產品程式庫的資訊,請前往Iron Software 程式庫頁面

常見問題

NSwag如何幫助生成C#中的API規格?

NSwag可以自動從.NET Core專案中生成API規格(即Swagger或OpenAPI文件)。這確保了API文件始終與程式碼庫同步。

將Swagger規格轉換為PDF文件的流程是什麼?

要將Swagger規格轉換為PDF文件,可以使用IronPDF。首先,使用NSwag生成Swagger規格,然後利用IronPDF將這些規格的HTML內容轉換為高質量的PDF。

如何將NSwag整合到.NET專案中?

將NSwag整合到.NET專案中涉及透過NuGet安裝NSwag程式庫、將其配置為在構建過程中生成Swagger規格,並使用生成的規格進行文件和程式碼生成。

NSwag可以從一個Swagger規格生成客戶端和伺服器端程式碼嗎?

是的,NSwag可以從一個Swagger規格生成包括C#、Java和TypeScript等語言的客戶端程式碼,以及伺服器端程式碼如ASP.NET Core控制器。

IronPDF如何增強API文件化的工作流程?

IronPDF通過允許開發人員將基於HTML的API文件轉換為專業的、可分享的PDF文件,從而使資訊可在離線狀態下存取,增強了API文件化的工作流程。

在Visual Studio專案中使用IronPDF需要哪些步驟?

要在Visual Studio專案中使用IronPDF,可透過NuGet Package Manager搜尋IronPDF並點擊“安裝”,或使用Package Manager Console輸入指令Install-Package IronPdf

如何使用NSwag生成互動式API文件?

NSwag可以透過生成Swagger UI來生成互動式API文件,這提供了一個用於直接在瀏覽器中探索和測試API端點的友好介面。

使用NSwag進行API文件化的好處是什麼?

NSwag自動生成API文件,確保其始終與程式碼庫保持更新。它還支持互動文件的建立和客戶端程式碼生成,簡化了開發過程。

IronPDF如何與HTML內容協作建立PDF文件?

IronPDF將HTML內容,包括CSS和JavaScript,轉換為PDF格式,其渲染引擎使其成為建立精確、可離線使用的文件的理想選擇。

Jacob Mellor,首席技術官 @ Team Iron
首席技術官

Jacob Mellor是Iron Software的首席技術官,一位在C# PDF技術上開創先河的遠見工程師。作為Iron Software核心程式碼庫的原開發者,他從創立以來就一直在塑造公司的產品架構,與首席執行官Cameron Rimington一起將公司轉變為服務於NASA、特斯拉和全球政府公司的50多名人員的公司。

Jacob擁有曼徹斯特大學的土木工程一等榮譽學士學位(BEng),於1998-2001年之間獲得。在1999年於倫敦創辦他的第一家軟體公司並於2005年建立了他的第一批.NET元組件後,他專注於解決Microsoft生態系統中的複雜問題。

他的旗艦IronPDF和Iron Suite .NET程式庫在全球獲得了超過3000萬次NuGet安裝依據,他的基礎程式碼基繼續支援著世界各地開發者使用的工具。擁有25年的商業經驗和41年的程式設計專業知識,他仍專注於推動企業級C#、Java和Python PDF技術的創新,同時指導下一代技術領導者。

Iron 支援團隊

我們線上24小時,每週5天。
聊天
電子郵件
給我打電話