.NET ヘルプ

OpenAPI .NET(開発者向けの仕組み)

Kannaopat Udonpant
カンナパット・ウドンパント
2024年7月1日
共有:

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

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

.NETでOpenAPIの設定

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

ステップ2:Swashbuckleの構成

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

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI description at https://aka.ms/aspnetcore/swashbuckle
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();
// Learn more about configuring Swagger/OpenAPI description at https://aka.ms/aspnetcore/swashbuckle
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();

API ドキュメントの生成と閲覧

Swashbuckleの設定が完了すると、アプリケーションを実行するだけで自動的にOpenAPIドキュメントが生成されます。 これらの OpenAPI の説明はSwagger UIインターフェース.

OpenAPI 定義の使用

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

カスタム注釈による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();
        }
    }
}

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

出力

OpenAPI .NET(開発者のための動作説明):図1 - カスタムアノテーションの出力

実行]ボタンをクリックすると、次のような応答が表示されます。

OpenAPI .NET(開発者向けの動作方法):図2 - レスポンス出力

IronPDF

IronPDFは、.NETおよびJava、Python、Node.jsでPDFを生成、編集、読み取るための強力なツールです。プログラマー向けに最適化されており、コードからPDFファイルの作成を容易に行うことができます。IronPDFは、HTML、CSS、JavaScript、および画像をPDFドキュメントに変換する能力を提供します。

機能

  • HTML to PDF: HTML、CSS、JavaScriptを利用してPDFを生成。
  • PDFの編集: 既存のPDFドキュメントにテキスト、画像、ページ番号、さらにはカスタムヘッダーやフッターを追加。
  • PDFの読み取り: PDFファイルからテキスト、画像、メタデータを抽出。
  • セキュリティ: パスワード保護や暗号化オプションでPDFドキュメントを保護。

利点

  • 使いやすさ: シンプルなAPIで時間を節約。
  • 高品質: 正確で美しいPDFドキュメントを生成。
  • 柔軟性: 様々なプラットフォームや言語で利用可能。

対応ライセンス

IronPDFは様々なライセンスオプションがあり、Lite License、Plus License、Professional License、Unlimited Licenseが用意されています。

技術サポートや詳細については、Iron Softwareの公式サイトをご覧ください。

IronPDF for ASP.NETは、ASP.NETアプリケーション内でPDFドキュメントの生成と操作をシームレスに実現する強力なツールです。 直感的なAPIと堅牢な機能を備えたIronPDFを使用すれば、開発者はPDF生成をウェブプロジェクトに簡単に統合でき、ユーザーに向けて文書管理機能を強化することができます。 作成からHTMLコンテンツのPDFへの変換、画像やテキストなどの動的要素の追加まで、IronPDFはプロセスを簡素化し、効率的でプロフェッショナルなドキュメント作成を実現します。

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

  1. Visual Studio で ASP.NET プロジェクトを開き、「ツール」メニューに移動します。

  2. 「NuGet パッケージ マネージャー」を選択し、「ソリューションの NuGet パッケージを管理」をクリックします。

  3. 「ブラウズ」タブで「IronPDF」と検索し、希望のバージョンを選択します。 「インストール」をクリックして、パッケージをプロジェクトに追加します。 IronPDFとその依存関係は自動的にダウンロードおよび統合され、ASP.NETアプリケーションでその機能をシームレスに活用し始めることができます。

    OpenAPI .NET(開発者向けの使い方):図3 - IronPDF

API呼び出しに応じてPDFファイルを取得

次のコードをコントローラーファイルに追加します。これはIronPDFを使用してPDFファイルを作成し、APIコールに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)]
            });

            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 HTML to PDF
            var renderer = new ChromePdfRenderer();
            var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);

            // Return PDF file
            var pdfBytes = pdfDocument.BinaryData;
            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)]
            });

            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 HTML to PDF
            var renderer = new ChromePdfRenderer();
            var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);

            // Return PDF file
            var pdfBytes = pdfDocument.BinaryData;
            return File(pdfBytes, "application/pdf", "WeatherForecast.pdf");
        }
    }
}

OpenAPI .NET(開発者向けの動作方法について):図4 - API出力

添付されたPDFファイルをダウンロードして開いてください。

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

結論

OpenAPI(以前はSwaggerとして知られていました)は、Swashbuckleのようなライブラリを通じて、.NETエコシステムにおけるRESTful APIの設計とドキュメント作成を効率化し、ASP.NET Coreプロジェクトの自動APIドキュメント生成を容易にします。 OpenAPIとIronPDFのシナジーを示すために、HTMLコンテンツからPDFファイルを生成し、APIレスポンスとして返すIronPDFの機能を活用する方法を紹介し、ASP.NETアプリケーションの機能を強化しました。 OpenAPI基準を採用し、IronPDFの強力な機能を活用することで、開発者はAPIドキュメントの実践を強化し、ユーザーに洗練された機能豊富なアプリケーションを提供できます。

IronPDFライセンスの詳細についてはIronPDFライセンスの詳細. さらに、当社のHTMLからPDFへの変換チュートリアル詳細はこちら

Kannaopat Udonpant
カンナパット・ウドンパント
ソフトウェアエンジニア
ソフトウェアエンジニアになる前に、カンナパットは日本の北海道大学から環境資源学の博士号を取得しました。学位を取得する過程で、カンナパットはバイオプロダクション工学部に所属する車両ロボティクス研究所のメンバーにもなりました。2022年には、C#のスキルを活かしてIron Softwareのエンジニアリングチームに参加し、IronPDFに注力しています。カンナパットは、IronPDFで使用されているコードの大部分を作成した開発者から直接学べることに価値を見いだしています。同僚との学び合いに加えて、Iron Softwareで働くことの社会的側面も楽しんでいます。コードやドキュメントを書いていない時には、カンナパットは通常、PS5でゲームをしたり、『The Last of Us』を再視聴したりしています。
< 以前
Humanizer C#(開発者向けの仕組み)
次へ >
C#におけるMicrosoft.Extensions.Caching.Memoryの例(PDF付き)