フッターコンテンツにスキップ
.NETヘルプ

OpenAPI .NET(開発者向けの動作方法)

OpenAPI(以前はSwaggerとして知られていた)は、RESTful APIを構築および記述するための仕様です。開発者がAPIの構造を標準化された形式で定義することを可能にし、さまざまなツールやサービスがREST APIを効果的に理解して対話し、フィードバックを提供できるようにします。 .NETエコシステムでは、OpenAPI .NETの統合は、APIの作成、文書化、消費を容易にするためのいくつかのライブラリとツールによって容易にされます。

この記事では、OpenAPIのサポート仕様と、IronPDFを使用してPDFファイルを作成し、API呼び出しの応答として返す方法について学びます。

.NETでのOpenAPIの設定

OpenAPI for .NETプロジェクトを開始するには、通常Swashbuckleライブラリを使用します。これにより、ASP.NET CoreのAPIのためのOpenAPI仕様やドキュメントが生成されます。

ステップ1: Swashbuckleのインストール

まず、Visual Studio でNuGet経由で Swashbuckle.AspNetCore パッケージをインストールする必要があります。 これをNuGetパッケージマネージャーコンソールを使用して行うことができます:

Install-Package Swashbuckle.AspNetCore

または、.NET CLIを使用して行います:

dotnet add package Swashbuckle.AspNetCore
dotnet add package Swashbuckle.AspNetCore
SHELL

ステップ2: Swashbuckleの設定

次に、ASP.NET CoreプロジェクトでSwashbuckleを設定する必要があります。 これには、Program.cs ファイルを更新して Swagger サービスを追加し、Swagger ミドルウェアを構成することが含まれます。

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddControllers();
// Configures Swagger/OpenAPI descriptions.
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();
var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddControllers();
// Configures Swagger/OpenAPI descriptions.
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();
$vbLabelText   $csharpLabel

APIドキュメントの生成と表示

Swashbuckleが設定されると、アプリケーションを実行することで、自動的にOpenAPIドキュメントが生成されます。 これらのOpenAPI記述はSwagger UIインターフェースに移動することで表示できます。

OpenAPI定義の使用

OpenAPI定義は、クライアントSDKの生成、APIのテスト、および異なるサービス間の一貫性を保証するために使用できる強力なツールです。 OpenAPIの仕様は、サービスのソースコードにアクセスせずに、サービスの機能を人間やコンピューターが理解できるようにする標準の言語に依存しないインターフェースを定義します。

カスタム注釈によるOpenAPIの拡張

Swashbuckleは、カスタム注釈でOpenAPIドキュメントを強化することを可能にします。 これらの注釈は、コントローラーやモデルに直接追加でき、APIの動作やデータ構造に関する追加情報を提供します。

例: カスタム注釈

using Microsoft.AspNetCore.Mvc;

namespace WebApplication8.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class WeatherForecastController : ControllerBase
    {
        private static readonly string[] Summaries = new[]
        {
            "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
        };

        private readonly ILogger<WeatherForecastController> _logger;

        public WeatherForecastController(ILogger<WeatherForecastController> logger)
        {
            _logger = logger;
        }

        [HttpGet(Name = "GetWeatherForecast")]
        [SwaggerOperation(Summary = "Gets the weather forecast for the next 5 days")]
        [SwaggerResponse(200, "Successfully retrieved weather forecast")]
        public IEnumerable<WeatherForecast> Get()
        {
            return Enumerable.Range(1, 5).Select(index => new WeatherForecast
            {
                Date = DateTime.Now.AddDays(index),
                TemperatureC = Random.Shared.Next(-20, 55),
                Summary = Summaries[Random.Shared.Next(Summaries.Length)]
            })
            .ToArray();
        }
    }
}
using Microsoft.AspNetCore.Mvc;

namespace WebApplication8.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class WeatherForecastController : ControllerBase
    {
        private static readonly string[] Summaries = new[]
        {
            "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
        };

        private readonly ILogger<WeatherForecastController> _logger;

        public WeatherForecastController(ILogger<WeatherForecastController> logger)
        {
            _logger = logger;
        }

        [HttpGet(Name = "GetWeatherForecast")]
        [SwaggerOperation(Summary = "Gets the weather forecast for the next 5 days")]
        [SwaggerResponse(200, "Successfully retrieved weather forecast")]
        public IEnumerable<WeatherForecast> Get()
        {
            return Enumerable.Range(1, 5).Select(index => new WeatherForecast
            {
                Date = DateTime.Now.AddDays(index),
                TemperatureC = Random.Shared.Next(-20, 55),
                Summary = Summaries[Random.Shared.Next(Summaries.Length)]
            })
            .ToArray();
        }
    }
}
$vbLabelText   $csharpLabel

この例では、SwaggerOperation 属性と SwaggerResponse 属性を使用して、エンドポイントの詳細な OpenAPI の説明と応答コードを提供します。

出力

OpenAPI .NET (開発者向けの仕組み): 図 1 - カスタム注釈の出力

"実行"ボタンをクリックすると、次の応答を得ることができます。

OpenAPI .NET (開発者向けの仕組み): 図 2 - 応答出力

IronPDF

IronPDF for ASP.NETは、ASP.NETアプリケーション内でPDFドキュメントのシームレスな生成と操作を可能にする強力なツールです。 その直感的なAPIと強力な機能を備えた開発者は、PDF生成をウェブプロジェクトに簡単に統合し、ユーザーに強化されたドキュメント管理機能を提供できます。 PDFを一から作成するか、HTMLコンテンツをPDFに変換するか、画像やテキストなどの動的要素を追加するか、いずれの場合もIronPDFはプロセスを簡素化し、効率的でプロフェッショナルなドキュメント生成を保証します。

NuGetパッケージマネージャーを使用してインストールする手順:

  1. ASP.NETプロジェクトをVisual Studioで開き、"ツール"メニューに移動します。
  2. "NuGetパッケージマネージャー"を選択し、"ソリューション用のNuGetパッケージを管理"をクリックします。
  3. "参照"タブで"IronPDF"を検索し、希望のバージョンを選択します。 "インストール"をクリックして、プロジェクトにパッケージを追加します。 IronPDFとその依存関係は自動的にダウンロードおよび統合され、ASP.NETアプリケーションでその機能をシームレスに活用できるようになります。

OpenAPI .NET (開発者向けの仕組み): 図 3 - IronPDF

API呼び出しに対する応答としてPDFファイルを取得

次のコードをコントローラー ファイルに追加してください。これはIronPDFを使用してPDFファイルを作成し、API呼び出しの応答として返します。

using Microsoft.AspNetCore.Mvc;
using IronPdf;

namespace WebApplication8.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class WeatherForecastController : ControllerBase
    {
        private static readonly string[] Summaries = new[]
        {
            "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
        };

        private readonly ILogger<WeatherForecastController> _logger;

        public WeatherForecastController(ILogger<WeatherForecastController> logger)
        {
            _logger = logger;
        }

        [HttpGet(Name = "GetWeatherForecast")]
        public IActionResult GetWeatherForecastPdf()
        {
            var htmlContent = @"
        <html>
        <head>
            <title>Weather Forecast</title>
        </head>
        <body>
            <h1>Weather Forecast</h1>
            <table>
                <tr>
                    <th>Date</th>
                    <th>Temperature (Celsius)</th>
                    <th>Summary</th>
                </tr>";

            var forecasts = Enumerable.Range(1, 5).Select(index => new WeatherForecast
            {
                Date = DateTime.Now.AddDays(index),
                TemperatureC = Random.Shared.Next(-20, 55),
                Summary = Summaries[Random.Shared.Next(Summaries.Length)]
            });

            // Iterate over the forecasts and add data to the HTML string
            foreach (var forecast in forecasts)
            {
                htmlContent += $@"
            <tr>
                <td>{forecast.Date.ToShortDateString()}</td>
                <td>{forecast.TemperatureC}</td>
                <td>{forecast.Summary}</td>
            </tr>";
            }

            htmlContent += @"
            </table>
        </body>
        </html>";

            // Convert the HTML string to a PDF using IronPDF
            var renderer = new ChromePdfRenderer();
            var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);

            // Retrieve the byte array of the generated PDF
            var pdfBytes = pdfDocument.BinaryData;
            // Return the PDF file to the client
            return File(pdfBytes, "application/pdf", "WeatherForecast.pdf");
        }
    }
}
using Microsoft.AspNetCore.Mvc;
using IronPdf;

namespace WebApplication8.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class WeatherForecastController : ControllerBase
    {
        private static readonly string[] Summaries = new[]
        {
            "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
        };

        private readonly ILogger<WeatherForecastController> _logger;

        public WeatherForecastController(ILogger<WeatherForecastController> logger)
        {
            _logger = logger;
        }

        [HttpGet(Name = "GetWeatherForecast")]
        public IActionResult GetWeatherForecastPdf()
        {
            var htmlContent = @"
        <html>
        <head>
            <title>Weather Forecast</title>
        </head>
        <body>
            <h1>Weather Forecast</h1>
            <table>
                <tr>
                    <th>Date</th>
                    <th>Temperature (Celsius)</th>
                    <th>Summary</th>
                </tr>";

            var forecasts = Enumerable.Range(1, 5).Select(index => new WeatherForecast
            {
                Date = DateTime.Now.AddDays(index),
                TemperatureC = Random.Shared.Next(-20, 55),
                Summary = Summaries[Random.Shared.Next(Summaries.Length)]
            });

            // Iterate over the forecasts and add data to the HTML string
            foreach (var forecast in forecasts)
            {
                htmlContent += $@"
            <tr>
                <td>{forecast.Date.ToShortDateString()}</td>
                <td>{forecast.TemperatureC}</td>
                <td>{forecast.Summary}</td>
            </tr>";
            }

            htmlContent += @"
            </table>
        </body>
        </html>";

            // Convert the HTML string to a PDF using IronPDF
            var renderer = new ChromePdfRenderer();
            var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);

            // Retrieve the byte array of the generated PDF
            var pdfBytes = pdfDocument.BinaryData;
            // Return the PDF file to the client
            return File(pdfBytes, "application/pdf", "WeatherForecast.pdf");
        }
    }
}
$vbLabelText   $csharpLabel

OpenAPI .NET (開発者向けの仕組み): 図 4 - API 出力

添付のPDFファイルをダウンロードして開きます。

OpenAPI .NET (開発者向けの仕組み): 図 5 - PDF 出力

結論

OpenAPIは、以前はSwaggerとして知られており、Swashbuckleのようなライブラリを通じて.NETエコシステムでRESTful APIの設計とドキュメント化を簡素化し、ASP.NET Coreプロジェクトの自動APIドキュメント生成を促進します。 OpenAPIとIronPDFの相乗効果を示し、IronPDFの機能を活用してHTMLコンテンツからPDFファイルを生成し、API応答として返す方法を紹介し、ASP.NETアプリケーションの機能を強化しました。 OpenAPI標準を採用し、IronPDFの強力な機能を活用することで、開発者はAPIドキュメントのプラクティスを強化し、ユーザーに洗練された機能豊富なアプリケーションを提供できます。

IronPDFのライセンスに関する詳細情報は、IronPDFのライセンス詳細を参照してください。 さらに、より詳しい指導については、HTMLからPDFへの変換チュートリアルを探索できます。

よくある質問

ASP.NETアプリケーションでHTMLコンテンツをPDFに変換するにはどうすればいいですか?

ASP.NETアプリケーションではIronPDFを使ってHTMLコンテンツをPDFに変換できます。IronPDFの機能を活用することで、HTML文字列やファイルをPDFドキュメントにレンダリングし、APIレスポンスとして提供したり、文書管理のために保存したりすることができます。

OpenAPIは.NETエコシステムにおいてどのような役割を果たしていますか?

OpenAPIは、RESTful APIの定義とドキュメント化を標準化された方法で提供することで、.NETエコシステムにおいて重要な役割を担っています。この統合は、多くの場合、Swashbuckleのようなツールを通じて行われ、OpenAPI仕様の生成を助け、ASP.NET Coreプロジェクト内でのAPIの容易な利用が可能になります。

.NETプロジェクトでSwashbuckleを使ってSwagger UIを設定するにはどうすればいいですか?

.NETプロジェクトでSwashbuckleを使ってSwagger UIを設定するには、NuGetを通じてSwashbuckle.AspNetCoreパッケージをインストールしてください。次に、Program.csファイルでSwaggerサービスを設定し、Swagger UIを通じてAPIドキュメントの自動生成とアクセスを可能にするSwaggerミドルウェアをセットアップします。

.NETでOpenAPI定義からクライアントSDKを生成するにはどうすればいいですか?

OpenAPI定義は、API呼び出しの複雑さを抽象化することで、APIの利用を容易にするクライアントSDKの生成に使用できます。.NETでは、Swashbuckleのようなツールがこれらの定義を生成し、その後AutoRestのようなツールと共に使用して、様々なプログラミング言語でクライアントSDKを作成します。

OpenAPIドキュメントでカスタムアノテーションを使用する利点は何ですか?

OpenAPIドキュメントのカスタムアノテーションは、API仕様の明確さと詳細を向上させます。.NETでは、Swashbuckleを使用して、SwaggerOperationSwaggerResponseといった属性を使用し、説明やレスポンスコードを追加することで、APIドキュメントをより情報豊かで開発者にとって理解しやすくします。

ASP.NET CoreでPDFファイルをAPIレスポンスとして配信するにはどうすればいいですか?

ASP.NET CoreでPDFファイルをAPIレスポンスとして配信するには、IronPDFを使用します。IronPDFのレンダリングメソッドを使用してHTMLコンテンツからPDFを生成し、ASP.NET CoreのIActionResultを使用してPDFファイルをレスポンスの一部として出力します。

OpenAPIとPDF生成ツールの組み合わせがASP.NETアプリケーションにもたらす利点は何ですか?

OpenAPIとIronPDFのようなPDF生成ツールをASP.NETアプリケーションに組み合わせることで、包括的なAPIドキュメントが提供され、APIがプロフェッショナルなPDFドキュメントを返すことができます。この統合は、効率的な文書管理をサポートし、アプリケーションの総合的な機能を強化します。

Jacob Mellor、Ironチームの最高技術責任者(CTO)
最高技術責任者(CTO)

ジェイコブ・メラーはIron Softwareの最高技術責任者(CTO)であり、C# PDFテクノロジーを開拓する先見的なエンジニアです。Iron Softwareのコアコードベースを支えるオリジナル開発者として、彼は創業以来、会社の製品アーキテクチャを形成し、CEOのCameron Rimingtonとともに、会社をNASA、Tesla、および世界的な政府機関にサービスを提供する50人以上の会社に変えました。1999年にロンドンで最初のソフトウェアビジネスを開業し、2005年に最初 for .NETコンポーネントを作成した後、Microsoftのエコシステム全体で複雑な問題を解決することを専門としました。

彼の主要なIronPDFとIron Suite .NETライブラリは、世界中で3000万以上のNuGetインストールを達成し、彼の基礎となるコードは世界中で使用されている開発者ツールに力を与え続けています。25年の商業経験と41年のコーディングの専門知識を持つJacobは、次世代の技術リーダーを指導しながら、エンタープライズグレードのC#、Java、Python PDFテクノロジーにおけるイノベーションの推進に注力しています。

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me