演習 - 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 には統合ターミナルが含まれており、これによって新しいプロジェクトの作成が簡単になります。 コード エディターを使用しない場合は、ターミナルでこのモジュールのコマンドを実行できます。

  1. Visual Studio Code で、[ファイル]>[フォルダーを開く] の順に選択します。

  2. 任意の場所に ContosoPizza という名前の新しいフォルダーを作成し、[フォルダーの選択] を選択します。

  3. Visual Studio Code で、メイン メニューの [表示]>[ターミナル] を選択して統合ターミナルを開きます。

  4. ターミナル ウィンドウに、次のコマンドをコピーして貼り付けます。

    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
    -| ConosoPizza.http
    -| Program.cs
    -| WeatherForecast.cs
    
  5. 次のファイルとディレクトリを調べます。

    名前 説明
    Controllers/ HTTP エンドポイントとして公開されるパブリック メソッドを含むクラスが含まれます。
    Program.cs サービスとアプリの HTTP 要求パイプラインを構成し、アプリのマネージド エントリ ポイントが含まれます。
    ContosoPizza.csproj プロジェクトの構成メタデータが含まれます。
    ConosoPizza.http Visual Studio Code から REST API を直接テストするための構成が含まれます。

Web API をビルドしてテストする

  1. コマンド シェルで次の .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 コマンドを再度実行する必要があります。

  2. 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 内でサポートされます。

  1. ContosoPizza.http ファイルを開きます。

    このファイルは、@ContosoPizza_HostAddress 変数と、application/json を受け入れる /weatherforecast/ を呼び出す GET コマンドで事前に構成されています。

  2. 実行中のサービスに要求を送信する "GET" の上にある [要求の送信] コマンドを選択します。

    このコマンドを呼び出すと、ブラウザー内で表示されたものと同様の出力を含む応答ウィンドウが開きます。

    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 を確認する

  1. Visual Studio Code のメイン メニューから [ターミナル]>[新しいターミナル] を選んで新しい統合ターミナルを開き、次のコマンドを実行します。

    dotnet tool install -g Microsoft.dotnet-httprepl
    

    上記のコマンドにより、Web API に HTTP 要求を行うために使用する .NET HTTP REPL コマンドライン ツールがインストールされます。

  2. 次のコマンドを実行して、Web API に接続します。

    httprepl https://localhost:{PORT}
    

    または、HttpRepl の実行中に次のコマンドを実行します。

    connect https://localhost:{PORT}
    

    ヒント

    HttpRepl ツールによって OpenAPI 記述が見つからないという警告が表示された場合、最も可能性の高い原因は、信頼されない開発証明書です。 HttpRepl にはセキュリティ接続が必要です。 続行する前に、dotnet dev-certs https --trust を使用して、開発証明書を信頼するようにシステムを構成する必要があります

  3. 次のコマンドを実行して、使用可能なエンドポイントを調べます。

    ls
    

    上記のコマンドでは、次の出力のように、接続されているエンドポイントで使用可能なすべての API が検出され、一覧表示されます。

    https://localhost:{PORT}/> ls
    .                 []
    WeatherForecast   [GET] 
    
  4. 次のコマンドを実行して、WeatherForecast エンドポイントに移動します。

    cd WeatherForecast
    

    上のコマンドを実行すると、WeatherForecast エンドポイントで使用可能な API が示されます。

    https://localhost:{PORT}/> cd WeatherForecast
    /WeatherForecast    [GET]
    
  5. 次のコマンドを使用して、HttpReplGET 要求を行います。

    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"
        },
        // ..
    ]
    
  6. 次のコマンドを使用して、現在の HttpRepl セッションを終了します。

    exit
    
  7. Visual Studio Code のドロップダウン リストで、dotnet ターミナルに戻ります。 キーボードの Ctrl + C キーを押して、Web API をシャットダウンします。

Web API を作成したので、ピザ Web API のニーズに合わせて変更できます。