演習 - Web API プロジェクトを作成する
このモジュールでは、.NET 8.0 SDK を使います。 適切なコマンド ターミナルで次のコマンドを実行して、.NET 8.0 がインストールされていることを確認します。
dotnet --list-sdks
次の例のような出力が表示されます。
6.0.317 [C:\Program Files\dotnet\sdk]
7.0.401 [C:\Program Files\dotnet\sdk]
8.0.100 [C:\Program Files\dotnet\sdk]
8
で始まるバージョンが一覧に表示されていることを確実にします。 何も表示されない場合、またはコマンドが見つからない場合は、最新の .NET 8.0 SDK をインストールしてください。
Web API プロジェクトを作成して調べる
Web API を使用できるように .NET プロジェクトを設定するには、Visual Studio Code を使用します。 Visual Studio Code には統合ターミナルが含まれており、これによって新しいプロジェクトの作成が簡単になります。 コード エディターを使用しない場合は、ターミナルでこのモジュールのコマンドを実行できます。
Visual Studio Code で、[ファイル]>[フォルダーを開く] の順に選択します。
任意の場所に ContosoPizza という名前の新しいフォルダーを作成し、[フォルダーの選択] を選択します。
Visual Studio Code で、メイン メニューの [表示]>[ターミナル] を選択して統合ターミナルを開きます。
ターミナル ウィンドウに、次のコマンドをコピーして貼り付けます。
dotnet new webapi -controllers -f net8.0
このコマンドを実行すると、コントローラーを使用する基本的な Web API プロジェクトのファイルと、天気予報のリストを返す ContosoPizza.csproj という名前の C# プロジェクト ファイルが作成されます。 エラーが発生する場合は、.NET 8 SDK がインストールされていることをご確認ください。
重要
Web API プロジェクトは、既定で
https
によって保護されます。 問題が発生する場合は、ASP.NET Core HTTPS 開発証明書を構成してください。Visual Studio Code で、プロジェクトをデバッグするためのアセットを追加するように求めるプロンプトが表示される場合があります。 ダイアログの [はい] を選択します。
このコマンドを実行すると、ASP.NET Core プロジェクト テンプレート (別名 webapi) を使用して、C# ベースの Web API プロジェクトがスキャフォールディングされます。 ContosoPizza ディレクトリが作成されます。 このディレクトリには、.NET で実行される ASP.NET Core プロジェクトが含まれます。 プロジェクト名は ContosoPizza ディレクトリ名と同じです。
これで、これらのファイルとディレクトリにアクセスできるようになりました。
-| Controllers -| obj -| Properties -| appsettings.Development.json -| appsettings.json -| ContosoPizza.csproj -| ContosoPizza.http -| Program.cs -| WeatherForecast.cs
次のファイルとディレクトリを調べます。
名前 説明 Controllers/ HTTP エンドポイントとして公開されるパブリック メソッドを含むクラスが含まれます。 Program.cs サービスとアプリの HTTP 要求パイプラインを構成し、アプリのマネージド エントリ ポイントが含まれます。 ContosoPizza.csproj プロジェクトの構成メタデータが含まれます。 ContosoPizza.http Visual Studio Code から REST API を直接テストするための構成が含まれます。
Web API をビルドしてテストする
コマンド シェルで次の .NET Core CLI コマンドを実行します。
dotnet run
上記のコマンドでは次のことが行われます。
- 現在のディレクトリにあるプロジェクト ファイルが検索されます。
- このプロジェクトに必要なプロジェクトの依存関係が取得されてインストールされます。
- プロジェクトのコードがコンパイルされます。
- HTTP と HTTPS の両方のエンドポイントで、ASP.NET Core の Kestrel Web サーバーを使用して Web API をホストします。
プロジェクトが作成されるときに、HTTP 用には 5000 から 5300 の範囲のポートが選ばれ、HTTPS 用には 7000 から 7300 の範囲のポートが選ばれます。 プロジェクトの launchSettings.json ファイルを編集することで、開発中に使用するポートを簡単に変更できます。 このモジュールでは、
https
で始まるセキュリティ保護されたlocalhost
URL を使います。アプリが実行されていることを示す、次のような出力が表示されます。
Building... info: Microsoft.Hosting.Lifetime[14] Now listening on: https://localhost:7294 info: Microsoft.Hosting.Lifetime[14] Now listening on: http://localhost:5118 info: Microsoft.Hosting.Lifetime[0] Application started. Press Ctrl+C to shut down. info: Microsoft.Hosting.Lifetime[0] Hosting environment: Development
このアプリを自分のコンピューターで実行している場合は、出力に表示される HTTPS リンク (前記の場合は
https://localhost:7294
) をブラウザーに指定して、結果のページを表示することができます。 このポートは、モジュール全体を通じて{PORT}
が使われている箇所で使用するので、覚えておいてください。重要
予期しない動作が発生した場合は、ターミナルの出力を確認します。 ビルドが失敗する場合、または他のエラーが発生する場合は、ログ ファイルの情報がトラブルシューティングに役立ちます。 コードを変更したら、キーボードの Ctrl + C キーを押して Web API を停止し、
dotnet run
コマンドを再度実行する必要があります。Web ブラウザーを開いて次の場所に移動します。
https://localhost:{PORT}/weatherforecast
次の例のような JSON 出力が表示されます。
[ { "date": "2021-11-09T20:36:01.4678814+00:00", "temperatureC": 33, "temperatureF": 91, "summary": "Scorching" }, { "date": "2021-11-09T20:36:01.4682337+00:00", "temperatureC": -8, "temperatureF": 18, "summary": "Cool" }, // ... ]
省略可能:.http
ファイルを使用した調査
このプロジェクトには ContosoPizza.http が含まれます。これは、標準形式で API エンドポイントをテストするために使用されるファイルです。 .http
ファイルは、Visual Studio を含む複数の統合開発環境 (IDE) と、REST クライアント拡張機能がインストールされた Visual Studio Code 内でサポートされます。
ContosoPizza.http ファイルを開きます。
一部の IDE では、このファイルは、@ContosoPizza_HostAddress 変数と、application/json を受け入れる /weatherforecast/ を呼び出す GET コマンドで事前に構成されています。
ファイルに存在する場合は、GET の上にある Send Request コマンドを選択します。これは、実行中のサービスに要求を送信します。
このコマンドを呼び出すと、ブラウザー内で表示されたものと同様の出力を含む応答ウィンドウが開きます。
HTTP/1.1 200 OK Connection: close Content-Type: application/json; charset=utf-8 Date: Wed, 17 Jan 2024 16:46:40 GMT Server: Kestrel Transfer-Encoding: chunked [ { "date": "2024-01-18", "temperatureC": -2, "temperatureF": 29, "summary": "Warm" }, { "date": "2024-01-19", "temperatureC": 24, "temperatureF": 75, "summary": "Chilly" }, // .. ]
省略可能:コマンド ライン HTTP REPL を使用して API を確認する
Visual Studio Code のメイン メニューから [ターミナル]>[新しいターミナル] を選んで新しい統合ターミナルを開き、次のコマンドを実行します。
dotnet tool install -g Microsoft.dotnet-httprepl
上記のコマンドにより、Web API に HTTP 要求を行うために使用する .NET HTTP Read-Eval-Print Loop (REPL) コマンドライン ツールがインストールされます。
次のコマンドを実行して、Web API に接続します。
httprepl https://localhost:{PORT}
または、
HttpRepl
の実行中に次のコマンドを実行します。connect https://localhost:{PORT}
ヒント
HttpRepl
ツールによって OpenAPI 記述が見つからないという警告が表示された場合、最も可能性の高い原因は、信頼されない開発証明書です。HttpRepl
にはセキュリティ接続が必要です。 続行するには、dotnet dev-certs https --trust
を使用して開発証明書を信頼するようにシステムを構成する必要があります次のコマンドを実行して、使用可能なエンドポイントを調べます。
ls
上記のコマンドでは、次の出力のように、接続されているエンドポイントで使用可能なすべての API が検出され、一覧表示されます。
https://localhost:{PORT}/> ls . [] WeatherForecast [GET]
次のコマンドを実行して、
WeatherForecast
エンドポイントに移動します。cd WeatherForecast
上のコマンドを実行すると、
WeatherForecast
エンドポイントで使用可能な API が示されます。https://localhost:{PORT}/> cd WeatherForecast /WeatherForecast [GET]
次のコマンドを使用して、
HttpRepl
でGET
要求を行います。get
上のコマンドを実行すると、ブラウザーでエンドポイントに移動する場合と同様の
GET
要求が行われます。HTTP/1.1 200 OK Content-Type: application/json; charset=utf-8 Date: Fri, 02 Apr 2021 17:31:43 GMT Server: Kestrel Transfer-Encoding: chunked [ { "date": 4/3/2021 10:31:44 AM, "temperatureC": 13, "temperatureF": 55, "summary": "Sweltering" }, { "date": 4/4/2021 10:31:44 AM, "temperatureC": -13, "temperatureF": 9, "summary": "Warm" }, // .. ]
次のコマンドを使用して、現在の
HttpRepl
セッションを終了します。exit
Visual Studio Code のドロップダウン リストで、
dotnet
ターミナルに戻ります。 キーボードの Ctrl + C キーを押して、Web API をシャットダウンします。
Web API を作成したので、ピザの Web API のニーズに合わせて変更できます。