練習 - 執行應用程式
在上一個練習中,您已為小組的 API 撰寫程式碼來實作資料庫作業。 在此練習中,您會測試已連線至資料庫的 API。
執行 API
在終端窗格中,執行應用程式:
dotnet run
檢查執行應用程式的輸出,並記下下列資訊:
- EF Core 會在 SQL 命令執行時以
info
記錄事件的形式回應 SQL 命令。 - 如果資料庫尚不存在,則會使用 SQL
CREATE
命令來定義資料表和索引。 - 如果資料庫尚未植入,則會執行
INSERT
命令以新增種子資料。 - 基於安全性,參數值不會回應主控台。 您可以使用 EnableSensitiveDataLogging 來變更此設定。
- EF Core 會在 SQL 命令執行時以
使用 SQLite Explorer 探索植入的資料庫。 每個資料表都有資料。
移至 Swagger
現在 API 執行中,請測試 API 以查看作業是否如預期般運作。 API 已設定為使用 Swagger 來提供測試 UI。 Swagger 是一項工具,可協助您設計、建置、記錄及取用 RESTful Web 服務。
在執行應用程式之後出現的輸出中,尋找應用程式接聽所在的 HTTP URL。 輸出會看似像以下範例:
info: Microsoft.Hosting.Lifetime[14] Now listening on: http://localhost:5200
若要開啟 URL,請選取它同時按住 Ctrl。 瀏覽器會開啟至 API 的
/
位置,這會傳回文字Contoso Pizza management API. Go to /swagger to open the Swagger test UI.
在瀏覽器網址列中,將
/swagger
新增至 URL 的結尾,然後選取 Enter。
測試 CRUD 作業
在下列步驟中,您會使用 Swagger UI 來以用戶端應用程式的方式測試每個 API 作業。 在每個作業之後,在 Sqlite Explorer 中檢查資料庫,以在資料庫變更發生時加以查看。
要求披薩的完整清單:
- 在 Pizza 標題下,展開 GET /Pizza 作業,然後選取 [試用] 按鈕。
- 選取 [執行] 按鈕。
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 } ]
提示
為何
sauce
和toppings
屬性為 Null? 這是預期的結果,因為在PizzaService.GetAll
方法中,您並未使用Include
擴充方法來指定應該載入瀏覽屬性。要求一個披薩:
- 向下捲動至 GET /Pizza/{id} 作業並加以展開,然後選取 [試用] 按鈕。
- 在 [識別碼] 欄位中,輸入 2,然後選取 [執行]。
此 API 會傳回「夏威夷」披薩。 請注意,會填入
sauce
和toppings
屬性,因為PizzaService.GetById
方法使用Include
擴充方法。加入一個新披薩:
向上捲動至 POST /Pizza 作業 (位於您所使用 GET 作業之間),並展開它,然後選取 [試用] 按鈕。
在 [要求本文] 文字方塊中,貼上下列 JSON:
{ "name": "BBQ Beef", "sauce": { "name": "BBQ", "isVegan": false }, "toppings": [ { "name": "Smoked Beef Brisket", "calories": 250 } ] }
選取 [執行]。
API 會傳回已填入
id
屬性的新披薩。將另一個配料新增至 BBQ 牛肉披薩:
- 向下捲動至 PUT /Pizza/{id}/addtopping 作業並加以展開,然後選取 [試用] 按鈕。
- 在 id 欄位中,輸入 4。
- 在 toppingId 欄位中,輸入 5。
- 選取 [執行]。
API 會更新披薩,並傳回成功代碼。 在資料庫中,會將記錄新增至
PizzaTopping
,以將披薩與配料產生關聯。變更 BBQ 牛肉披薩上的醬汁:
- 向下捲動至 PUT /Pizza/{id}/updatesauce 作業並加以展開,然後選取 [試用] 按鈕。
- 在 id 欄位中,輸入 4。
- 在 sauceId 欄位中,輸入 2。
- 選取 [執行]。
API 會更新披薩,並傳回成功代碼。 在資料庫中,
Pizza
記錄會更新,以將披薩與新的醬汁產生關聯。回到 GET /Pizza/{id} 作業,並藉由將 [識別碼] 欄位設定為 4 來要求 BBQ 牛肉披薩。 接著,選取 [執行]。 請注意,
sauce
和toppings
屬性已填入。{ "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 } ] }
您剛才明白加了義式白醬和鳳梨的煙燻牛胸肉披薩是個可怕的主意。
刪除披薩:
- 尋找 DELETE /Pizza/{id} 作業並加以展開,然後選取 [試用] 按鈕。
- 在 id 欄位中,輸入 4。
- 選取 [執行]。
API 會刪除披薩,並傳回成功的程式碼。 在資料庫中,會刪除
Pizza
記錄和PizzaTopping
中相關聯的記錄。在具有執行中應用程式的終端中,選取 Ctrl+C 以停止執行中的應用程式。
提示
您可以使用應用程式試驗。 每當您想要開始使用全新的資料庫時,請停止此應用程式,並刪除 ContosoPizza.db、.db-shm 和 .db-wal 檔案。 然後,再次執行應用程式。
很棒! 此應用程式會如預期般處理您的資料庫! 在下一個單元中,您會從現有的資料庫建構實體模型。