練習 - 執行應用程式

已完成

在上一個練習中,您已為小組的 API 撰寫程式碼來實作資料庫作業。 在此練習中,您現在會測試 API 已連線至資料庫。

執行 API

  1. 在終端窗格中,執行應用程式:

    dotnet run
    
  2. 檢查執行應用程式的輸出,並記下下列資訊:

    • EF Core 會在 SQL 命令執行時以 info 記錄事件的形式回應 SQL 命令。
    • 如果資料庫還不存在,則會使用 SQL CREATE 命令來定義資料表和索引。
    • 如果尚未植入資料庫,則會執行 INSERT 命令來新增種子資料。
    • 基於安全性,參數值不會回應主控台。 您可以使用 EnableSensitiveDataLogging 來變更此設定。
  3. 使用 SQLite Explorer 探索植入的資料庫。 每個資料表都有資料。

移至 Swagger

現在 API 執行中,請測試 API 以查看作業是否如預期般運作。 API 已設定為使用 Swagger 來提供測試 UI。 Swagger 是一項工具,可協助您設計、建置、記錄及取用 RESTful Web 服務。

  1. 在執行應用程式之後出現的輸出中,尋找應用程式接聽所在的 HTTP URL。 輸出看起來類似以下範例:

    info: Microsoft.Hosting.Lifetime[14]
          Now listening on: http://localhost:5200
    
  2. 若要開啟 URL,請選取它同時按住 Ctrl。 瀏覽器會開啟至 API 的 / 位置,這會傳回文字 Contoso Pizza management API. Go to /swagger to open the Swagger test UI.

  3. 在瀏覽器網址列中,將 /swagger 新增至 URL 的結尾,然後選取 Enter

測試 CRUD 作業

在下列步驟中,您會使用 Swagger UI 來以用戶端應用程式的方式測試每個 API 作業。 在每個作業之後,在 Sqlite Explorer 中檢查資料庫,以在資料庫變更發生時加以查看。

  1. 要求披薩的完整清單:

    1. Pizza 標題下,展開 GET /Pizza 作業,然後選取 [試用]。
    2. 選取 [Execute] \(執行\) 按鈕。

    API 會將披薩清單以 JSON 形式傳回 (在回應本文下)。

    [
        {
            "id": 1,
            "name": "Meat Lovers",
            "sauce": null,
            "toppings": null
        },
        {
            "id": 2,
            "name": "Hawaiian",
            "sauce": null,
            "toppings": null
        },
        {
            "id": 3,
            "name": "Alfredo Chicken",
            "sauce": null,
            "toppings": null
        }
        ]
    

    提示

    為何 saucetoppings 屬性為 Null? 這是預期的結果,因為在 PizzaService.GetAll 方法中,您並未使用 Include 擴充方法來指定應該載入瀏覽屬性。

  2. 要求一個披薩:

    1. 向下捲動至 GET /Pizza{id} 作業並加以展開。 然後選取 [試用]。
    2. id 欄位中,輸入 2 並選取 [執行]。

    此 API 會傳回「夏威夷」披薩。 請注意,會填入 saucetoppings 屬性,因為 PizzaService.GetById方法使用 Include 擴充方法。

  3. 加入一個新披薩:

    1. 向上捲動至 POST /Pizza 作業 (位於您剛才使用的 GET 作業之間),並加以展開。 然後選取 [試用]。

    2. 在 [要求本文] 文字方塊中,貼上下列 JSON:

      {
        "name": "BBQ Beef",
        "sauce": {
          "name": "BBQ",
          "isVegan": false
        },
        "toppings": [
          {
            "name": "Smoked Beef Brisket",
            "calories": 250
          }
        ]
      }
      
    3. 選取 [執行]。

    API 會傳回已填入 id 屬性的新披薩。

  4. 將另一個配料新增至 BBQ 牛肉披薩:

    1. 向下捲動至 PUT /Pizza{id}/addtopping 作業並加以展開。 選取 [試用]。
    2. id 欄位中,輸入 4
    3. toppingId 欄位中,輸入 5
    4. 選取 [執行]。

    API 會更新披薩,並傳回成功代碼。 在資料庫中,會將記錄新增至 PizzaTopping,以將披薩與配料產生關聯。

  5. 變更 BBQ 牛肉披薩上的醬汁:

    1. 向下捲動至 PUT /Pizza{id}/updatesauce 作業並加以展開。 選取 [試用]。
    2. id 欄位中,輸入 4
    3. sauceId 欄位中,輸入 2
    4. 選取 [執行]。

    API 會更新披薩,並傳回成功代碼。 在資料庫中,Pizza 記錄會更新,以將披薩與新的醬汁產生關聯。

  6. 回到 GET /Pizza{id} 作業,並藉由將 id 欄位設定為 4 來要求 BBQ 牛肉披薩。 接著,選取 [執行]。 請注意,saucetoppings 屬性已填入。

    {
        "id": 4,
        "name": "BBQ Beef",
        "sauce": {
            "id": 2,
            "name": "Alfredo",
            "isVegan": false
        },
        "toppings": [
            {
            "id": 5,
            "name": "Pineapple",
            "calories": 75
            },
            {
            "id": 6,
            "name": "Smoked Beef Brisket",
            "calories": 250
            }
        ]
    }
    
  7. 您發現加了義式白醬和鳳梨的披薩是個可怕的主意。

    刪除披薩:

    1. 尋找 DELETE /Pizza{id} 作業並加以展開。 選取 [試用]。
    2. id 欄位中,輸入 4
    3. 選取 [執行]。

    API 會刪除披薩,並傳回成功的程式碼。 在資料庫中,會刪除 Pizza 記錄和 PizzaTopping 中相關聯的記錄。

  8. 在具有執行中應用程式的終端中,選取 Ctrl+C 以停止執行中的應用程式。

提示

您可以使用應用程式試驗。 每當您想要開始使用全新的資料庫時,請停止此應用程式,並刪除 ContosoPizza.db.db-shm.db-wal 檔案。 然後再次執行應用程式。

做得好! 此應用程式會如預期般處理您的資料庫! 在下一個單元中,您將從現有的資料庫建構實體模型。