第 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())来维护数据完整性