4. 更新我们的 TrackAPI 数据源
3m
你当前使用的是本课程的旧版本。 查看课程变更日志.

📺 numberOfViews++

我们准备如何更新曲目的观看次数?为此,我们准备访问我们的 REST API 文档

首先,我们来观察执行GET track/:id端点(ID c_0),所得到的响应。响应成功时,我们会收到该曲目,并且可以看到当前的观看次数。你所看到的数字取决于最近有多少其他人完成了本课程!

要增加观看次数,我们会查看 PATCH track/:id/numberOfViews端点,它会更新某个曲目的观看次数。

我们来试用此端点,并给它相同的曲目 ID c_0。当执行此调用时,我们会得到一个 200 成功响应和修改后的曲目。我们可以看到观看次数已经增加了!如果再次运行,我们会看到观看次数再次增加。

注意,由于 API 是公开的,您可能不会看到视图数量增加了 1。其他人可能正在使用该 API,就像我们现在正在做的那样。但我们知道,从 200 响应代码中可以看出,我们能够增加这个数字。

Screenshot of REST API PATCH endpoint with 200 successful response
任务!

如果向下滚动,我们还可以看到可能会有一个不成功的响应。让我们通过提供一个我们确信不存在的愚蠢的 ID 来对此进行测试,例如 DOESNTEXIST

执行此调用时,我们得到了预期的响应,即 404 Error: Not Found。我们稍后将了解如何处理此问题。

Screnshot of REST API PATCH endpoint with 404 error

📈 更新数据源

现在我们知道了调用哪个终结点以及如何调用,让我们向我们的

新增一个方法!RESTDataSource 的老朋友吗?在 Lift-off II 中我们使用过它来创建我们自己的 TrackAPI

为什么我们使用一个单独的 RESTDataSource 类来处理数据检索?

我们可以在 server/src/datasources 文件夹中的 track-api.js 文件中找到 TrackAPI

在这个文件中,我们将在 TrackAPI 类中添加一个名为 incrementTrackViews 的新方法。

incrementTrackViews(trackId) {
return this.patch(`track/${trackId}/numberOfViews`);
}

此方法接受一个 trackId 参数。在其中,我们需要发出一个 HTTP PATCH 请求,我们可以通过调用this.patch来完成这项操作。此方法由我们继承自 RESTDataSource 类的。
在圆括号内,我们为它指定端点,即 track/,后跟 trackId,再后跟 /numberOfViews。最后,我们返回调用结果。

现已做好准备,可以发出 需要的 REST API 调用。让我们接下来进行设置!

上一个

分享你对本课程的疑问和评论

你的反馈有助于我们进行改进!如果你遇到困难或困惑,请告诉我们,我们来帮助你。所有评论都是公开的,并且必须遵循 Apollo 行为准则。注意,已解决或已处理的评论可能会被删除。

你需要一个 GitHub 帐户才能在下方发表评论。还没有帐户吗? 转而在我们的 Odyssey 论坛中发表评论。