SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

.NET最新版でASP.NET Core

RESTfulなWebサービス開発に向けたASP.NET Core Web API活用の基本

.NET最新版でASP.NET Core 第8回

ASP.NET CoreでWeb APIを利用するメリット

なぜASP.NET Coreなのか?

 ASP.NET CoreにWeb APIが設けられているもう一つの理由は、通常のASP.NET Coreアプリケーションの開発手法とリソースを活用できるからです。Web APIといっても、それはASP.NET Core MVCアプリケーションからビューなどWebサービスでは不要なものを取り去ったものと言えるので、開発手法に大きな違いは出ません。ビューこそ提供しませんが、ルーティング、コントローラ開発、モデル開発、そしてEntity Frameworkといったコンポーネントについても活用が可能です。

 Webサービスでは、突き詰めればJSONやXMLといった形式のデータを提供できればいいので、ASP.NET Coreなどのフレームワークを使用しない、極論すればPHPやPythonなどのスクリプトをただ動かすだけのような実装も可能です。しかし、効率的な開発やテスト、それに運用管理も考慮すれば、ASP.NET Coreのようなフレームワーク上に構築した方が多くの恩恵を得られます。例えば、ASP.NET Coreでは以下のような機能が提供され、Web APIでも利用できます。

  • 開発、テスト、本番環境の使い分け
  • 基本的なセキュリティ機能
  • カスタマイズ可能なログ出力
  • ルーティング
  • キャッシュの利用
  • 認証機能
  • ジェネレータ機能(Scaffoldingなど)

Web APIの構成

 ここまでで、Web APIを利用するメリットを紹介しました。このWeb APIは、.NET 6からは2つのフレームワークを選択して使い分けることができるようになっています。一つは、.NET 6以前から利用可能であったコントローラベースのWeb APIフレームワークです。そしてもう一つは、Minimal APIという文字通り最小限の構成のフレームワークです。

 コントローラベースのWeb APIは、ASP.NET Coreの備える機能をフルに生かしたアプリケーション開発が可能なので、ジェネレータ機能を生かしたRESTfulなAPIの実装をはじめとして、さまざまな局面での利用が可能です。これに対してMinimal APIには、コントローラベースのWeb APIに比較して、以下のような制限があります。

  • モデルへのバインディングがサポートされない
  • フォームからのバインドがサポートされない
  • 検証の組み込みがサポートされない
  • アプリケーションパーツ(プロジェクト間でアクションなどを共有する仕組み)とアプリケーションモデル(MVCなどのルールの適用)がサポートされない
  • 組み込みのビューのレンダリングがサポートされない
  • JsonPatch、ODataがサポートされない

 特に、モデルへのバインディングが組み込みでサポートされないので、データに対するCRUD処理が必要な場合にはコントローラベースのWeb APIの利用が推奨されます。そうでない場合には、シンプルな構成のMinimal APIを利用すると軽量でコンパクトなWebサービスの構築が可能になります。

Swaggerによるサポート

 コントローラベースのWeb API、Minimal APIともに、Swaggerと呼ばれるツールを利用可能です。Swaggerとは、SmartBear Software社によるAPI開発者向けのツールスイートであり、APIの記述についての仕様です。現在では、SwaggerをベースとしたOpenAPI Specification(OAS)が標準となっており、Swaggerといえばツールスイートを指すことが多くなっています。Swaggerは以下のツールから構成されます。

  • Swagger Editor……OASを記述するWebベースのエディタ
  • Swagger UI……OASをもとにAPIのドキュメントをHTMLで提供
  • Swagger Codegen……OASから各言語のコードを生成

 Swaggerは同社によるものが本家ですが、オープンソースのツールやライブラリも存在します。Web APIでは、このうちSwashbuckleとNSwagという2つのコンポーネントで実装されています。ルートやコントローラ、モデルからOASを生成したり(Swaggerジェネレータ)、OASをもとにドキュメントや検証用のUIを構築できます(Swagger UI)。これにより、特に検証用のクライアントを用意する必要なく、APIの検証が実施できるようになっています。これも、ASP.NET Core Web APIを利用するメリットの一つと言えます。

[NOTE]OpenAPI Specification(OAS)とは

 OpenAPI Specification(OAS)とは、Web APIのインタフェース定義を定めた標準です。APIの仕様について、エンドポイントとその操作、パラメータやレスポンス、認証についてJSON形式などで記述することができます。OASとして標準化されるまでは、Swagger仕様と呼ばれていました。OASにより、開発者間はもとよりプログラムコードともAPIの仕様を共有するのが容易になります。具体的な内容の例を図2に示します。これは、後述する実行例においてリンクとして表示されているものです。表示される内容には、APIの仕様が細かく記述されています。

図2:OpenAPIを記述したJSON
図2:OpenAPIを記述したJSON

次のページ
コントローラベースのWeb APIプロジェクトを作成する

この記事は参考になりましたか?

.NET最新版でASP.NET Core連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト 山内 直(WINGSプロジェクト ヤマウチ ナオ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook <個人紹介>WINGSプロジェクト所属のテクニカルライター。出版社を経てフリーランスとして独立。ライター、エディター、デベロッパー、講師業に従事。屋号は「たまデジ。」。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/17691 2023/05/31 11:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー