📺 numberOfViews++
我们如何更新某个作品的观看次数呢?为了发现这一点,让我们访问我们的REST API文档!
首先,让我们观察当我们执行带有IDGET track/:id
的端点时得到的响应,ID是c_0
。 如果响应成功,我们将收到轨道并可以看到当前的观看次数。你看到的数字将取决于最近有多少人完成了这门课程!
要增加观看次数,我们将查看PATCH track/:id/numberOfViews
端点,该端点更新作品的观看次数。
让我们尝试这个端点,并给它相同的作品IDc_0
。 当我们执行这个调用时,我们得到一个200成功的响应和修改后的作品。我们可以看到观看次数增加了!如果我们再次运行它,我们可以看到观看次数再次增加。
注意,由于API是公开的,你可能会看到观看次数不是恰好增加1。其他人可能会像我们现在一样玩弄API。但我们知道,从200响应代码我们可以增加这个数字。
如果我们向下滚动,我们还可以看到有可能得到一个不成功的响应。让我们通过提供一个愚蠢的ID来测试这个端点,我们确定它不会存在,例如:DOESNTEXIST
。
当我们执行这个调用时,我们得到预期的响应,404错误:未找到
。 我们将在以后查看如何处理这种情况。
📈 更新数据源
现在我们知道了需要调用哪个端点以及如何调用,接下来让我们向我们的程序中添加一个新的方法。数据源!
还记得我们的老朋友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 账户。还没有一个吗? 请在我们的大冒险论坛上发布。