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