4. 更新我们的TrackAPI数据源
3m

📺 numberOfViews++

我们如何更新某个作品的观看次数呢?为了发现这一点,让我们访问我们的REST API文档

首先,让我们观察当我们执行带有IDGET track/:id的端点时得到的响应,ID是c_0。 如果响应成功,我们将收到轨道并可以看到当前的观看次数。你看到的数字将取决于最近有多少人完成了这门课程!

要增加观看次数,我们将查看PATCH track/:id/numberOfViews端点,该端点更新作品的观看次数。

让我们尝试这个端点,并给它相同的作品IDc_0。 当我们执行这个调用时,我们得到一个200成功的响应和修改后的作品。我们可以看到观看次数增加了!如果我们再次运行它,我们可以看到观看次数再次增加。

注意,由于API是公开的,你可能会看到观看次数不是恰好增加1。其他人可能会像我们现在一样玩弄API。但我们知道,从200响应代码我们可以增加这个数字。

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

如果我们向下滚动,我们还可以看到有可能得到一个不成功的响应。让我们通过提供一个愚蠢的ID来测试这个端点,我们确定它不会存在,例如:DOESNTEXIST

当我们执行这个调用时,我们得到预期的响应,404错误:未找到。 我们将在以后查看如何处理这种情况。

Screnshot of REST API PATCH endpoint with 404 error

📈 更新数据源

现在我们知道了需要调用哪个端点以及如何调用,接下来让我们向我们的程序中添加一个新的方法。

还记得我们的老朋友RESTDataSource吗?它来自启动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 账户。还没有一个吗? 请在我们的大冒险论坛上发布。