第 5 部分 – 动态片段

如果你将鼠标悬停在提醒上,你会看到一个“X”图标弹出来。如果你点击它,你会删除提醒 – 除了你会在控制台中看到一个错误

Mirage:您的应用程序尝试 DELETE '/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())来维护数据完整性