サンプルデータとフィルタリング - C#でサンプルAPIを構築する
今日、ウェブ開発に携わる場合、重要なツールの1つは、フロントエンドのウェブアプリ、モバイルデバイス、あるいはソフトウェアアプリケーションのテストに使用できるサンプルのウェブAPIです。 サンプルデータとフィルタリング - C#でサンプルAPIを構築する"の詳細なビデオでは、Tim Corey氏がJSONファイルからサンプルデータをロードし、フィルタリングを設定し、Dockerコンテナまたは従来のWebアプリケーションとしてデプロイする準備をしたC# Web APIの作成について説明しています。
この記事では、Timのアプローチをステップ・バイ・ステップで探り、.NET Core Web API、Minimal API、HTTPサービスのコア・コンセプトを説明します。
サンプル Web API の紹介
ティムはまず、新しい Web API プロジェクトを作成することが開発者にとってなぜ重要なのかを説明します。 モバイル機器、ウェブアプリ、その他のソフトウェアアプリケーションのいずれを構築する場合でも、軽量のサンプルAPIがあれば、テストが迅速かつスムーズになります。
ティムは、プロジェクト終了までに以下のものを手に入れると述べています:
ASP.NET Coreと.NET Coreを使用した最小限のAPI、
OpenAPI (Swagger UI)をサポートするドキュメント化されたAPI、
ヘルスチェック
エラーや速度低下のシミュレーション
- DockerコンテナとVPSサーバーへのデプロイ。
この小さなプロジェクトによって、開発者はGET、PUT、POST、DELETEなどのHTTPメソッドを通じて、HTTPサービスと簡単にやり取りできるようになります。
プロジェクトとサンプルデータの設定
Timはまず、Microsoftによる人気の統合開発環境であるVisual Studio内でWeb APIプロジェクトを構成することから始めます。
1:07で、Timは新しいDataフォルダを作成し、courseData.jsonファイルを追加します。彼は、彼のライブサイト、timcorey.comが同じようなシステムを使っていることに言及します - 舞台裏で大きなJSONファイルがウェブサービスとして機能しているだけです。
ティムのセットアップのポイント
データベースやEntity Frameworkを必要としないよう、サンプルデータにはJSONファイルを使用してください。
SQLサーバーのような追加サービスを避け、コンテナを小さく保つこと。
- データは変更不可能で、変更を保存する必要はありません; 必要なときにデータをリセットするだけです。
この選択は、既存のリソースを扱うREST(Representational State Transfer)の原則を反映しています。
コースのデータ構造の理解
Timは、サンプルのJSONファイルの構造を丁寧に説明します:
ID(整数)、
PreOrder (boolean)、
コースのURL(文字列)、
コースの種類(文字列)、
名前、レッスン数、コースの長さ(時間数)、
説明、画像URL
価格は米ドルです、
- プレビューリンク
ティムは3:29で、価格はすべて米ドルベースであると説明している; ただし、現地の税金(VAT)により最終価格が変わる可能性があります。
これらの各フィールドは、後にASP.NET Web APIを構築する際の基本要素であるC#のモデルクラスにマッピングされます。
コースモデルクラスの作成
.NET Coreコーディングに移行し、Timは新しいModelsフォルダ内にCourseModel.csファイルを作成します。
4:47では、Visual Studioの"Paste Special > Paste JSON as Classes"を使って、JSON構造に基づいてクラスを即座に足場組みしている。 ティムはこう指摘する:
適切なPascalCase命名(C#ウェブAPIにとって重要)、
必須文字列とnull可能文字列(6:02)、
- 空文字列で十分な場合、nullの格納は避けてください。
強力なモデルクラスを作成することは、クライアントとサーバー間のデータ通信を可能にするために非常に重要です。
データをメモリにロードする
Timはコースリストのメモリへのロードを管理するためにCourseData.csクラスを作成することで続けます。
主な手順
デシリアライズにはSystem.Text.Jsonを使用してください、
PropertyNameCaseInsensitive = true (8:04) を設定して、キャメルケースの JSON をパスカルケースの C# フィールドにマッピングする、
クロスプラットフォームのファイルアクセスには、Path.Combine(9:04)を使ってください、
- Linuxサーバーを扱うときは、大文字と小文字を区別すること(9:59)。
コースは public List
11:04のTimは、デシリアライズに失敗した場合、ヌル参照エラーを防ぐために新しい空のリストが作成されることを強調している。
依存性注入にコースデータを登録する
次に、TimはサービスコンテナでAddTransientを使用してCourseDataクラスを登録する方法を示します。
また、データが読み取り専用であっても、トランジェント・サービスを使用することで、偶発的な変更の問題を避けることができると説明しています。 このアプローチは、最新のASP.NET Core Web API開発標準に沿ったものです。
コースエンドポイントの作成
14:03から、TimはサンプルAPIのエンドポイントを作り始める:
すべてのコースを取得するための /courses での GET メソッド、
- よりクリーンなコードのための拡張メソッドAddCourseEndpoints。
このモジュラーアプローチは、Web APIプロジェクトのスケーリングを簡素化し、大規模なHTTPサービスや複数のエンドポイントを管理する際に不可欠なテクニックです。

また、Timは起動URLをSwagger UIに設定し、テストを容易にします。
トラブルシューティング:データ型の不一致
新しいエンドポイントをテストしているとき、Tim は CourseLengthInHours フィールドに関連するステータスコードのエラーに遭遇しました。 彼は、コースによっては(2.5のような)端数時間があり、intの代わりにdoubleが必要であることに気づいています。
Tim は CourseModel を修正し、外部ウェブリソースを消費する際の徹底したエラーチェックとデータ型の尊重の価値を示します。
IDルックアップでAPIを改善する
ティムは機能を拡張します:
LoadAllCourses ですべてのコースを検索します、
- LoadCourseByIdはIDでコースを検索します。
彼は、コースが存在するかどうかをチェックすることで、エラー処理を改善します。 もしそうでなければ、Timはreturn NotFound()を使い、適切なHTTPステータスコードをクライアントに返します。
これは、各HTTPメソッドが操作結果を明確に伝えるRESTfulアーキテクチャスタイルの実践にマッチします。
コースタイプと検索によるフィルタリングの追加
単純なGETメソッドだけでは不十分で、実際のウェブサービスにはフィルタリング機能が必要です。
Tim は、クエリ・パラメータを受け付けるように LoadAllCourses を強化します:
courseType (文字列)、
- 検索(文字列)。
String.IsNullOrWhiteSpaceを使用してオプションのパラメータを安全に処理する方法を説明しています。
courseTypeによるフィルタリングでは、RemoveAllとString.Compareを使用し、大文字と小文字の違いを無視しています。 コース名と短い説明を検索するには、大文字と小文字を区別しない比較で.Containsを使用します。
ティムは、次のようなシナリオをテストします:
"マスターコース "のフィルタリング
"web "または "SQL "で検索
- 検索とコースの種類を組み合わせて洗練された結果を得る
これにより、ウェブアプリ、モバイルアプリ、またはHTTP経由で通信するクライアントのユーザーに、完全にインタラクティブな体験を提供します。詳細については、ビデオを参照してください。
最終的な感想と次のステップ
レッスンが終わるころには、Timは次のようなものを作成しています:
動作するASP.NET Core Web API、
フィルタリングと検索機能、
適切なエラー処理(NotFound、Okなど)、
- Swagger UIおよびOpenAPIドキュメントをサポートします。
ティムは、次はCross-Origin Resource Sharing (CORS) - インターネットクライアントや異なるドメインがAPIに自由にアクセスできるようにするために重要 - を扱うと予告している。
ティムは最後に、"プログラミングは時にハードルを伴いますが、やりがいのあるものです"と励ましの言葉で締めくくった。
結論
Tim Corey の video に従って、Visual Studio で新しい Web API プロジェクトを作成し、サンプル データをロードし、エンドポイントをビルドし、強力なフィルタリングを実装することができます。
ウェブページのテスト、モバイル機器向けのAPIの構築、既存のリソースでの作業など、このセットアップにより、HTTPメソッドを介したデータへの高速で信頼性の高いアクセスが保証されます。
.NET Coreでこれらのパターンを練習し続ければ、すぐにクライアント、サーバー、インターネット間で円滑に通信する堅牢なWebサービスを作成できるようになります!




