第五部分 – 動態區段

如果您將滑鼠懸停在提醒事項上,您會看到一個「X」圖示彈出。如果您點擊它,您將會刪除該提醒事項 – 除非您查看主控台,否則您會看到一個錯誤

Mirage:您的應用程式嘗試刪除 '/api/reminders/1',但沒有定義處理此請求的路由。

那是因為我們還沒有模擬這個 DELETE 請求。現在就來做吧。

我們需要在我們的 URL 中使用動態區段,因為 DELETE 請求可以發送到 /api/reminders/1/api/reminders/2 等。

將這個新的路由處理器新增到您伺服器的 routes()

this.delete("/api/reminders/:id", (schema, request) => {
  let id = request.params.id

  return schema.reminders.find(id).destroy()
})

/api/reminders/:id 中的冒號 : 是我們如何在 URL 中表示動態區段。我們可以透過 request.params.id 存取區段的執行階段值。然後我們使用 schema 來找到對應的提醒事項,然後對其呼叫 destroy() 以從 Mirage 的資料庫中移除它。

重新載入您的應用程式並嘗試刪除一個提醒事項。您應該會看到 204 成功的響應,如果您導覽到「關於」再返回,從新的 GET 呼叫到 /api/reminders 所回傳的資料將不包含您已刪除的提醒事項。

重點整理

  • 使用 :segmentName 在路由處理器的 URL 中定義動態區段
  • 透過 request.params.segmentName 存取動態區段
  • 使用 schema.* 方法(例如 destroy())來維護資料完整性