如何让API调用一次expired/unique和return数据?

How to make API call expired/unique and return data once?

我有一个以 nodejs 作为后端的视频网站。视频对每个人来说都是 public,所以 API 也是 public。这就是问题所在,他们可以查看 API 并更改参数以获取更多数据。我想保护它免受数据泄露、垃圾邮件或抓取。

我想让每个API都是唯一的,每次用户发送一个请求,API都会return一次数据。如果他再次访问此 API URL,则没有数据 returned。如果他刷新页面,就会生成新的 API URL 并给他一次数据。看起来像这个网站 https://www.douyin.com/video/7000302017407110436

数据return只有一次,如果你访问下面API调用URL,它return null 像这样https://shorturl.at/cwI37

数据显示一次这样

我该怎么做?

如果我没看错,您想向特定用户发送一个 link,这个 link 应该只调用一次。这里有一个基本的概念:

  • 您创建一个函数来创建一个唯一 ID,然后将唯一 ID 与资源位置一起存储。这个资源应该不能从外部访问(不在 public 目录中)
  • 您创建了一个 路由,类似于 FQDN/get/:id,其中“id”是唯一 ID。
  • 处理请求时,您 在 storage/DB 中搜索,如果找到唯一 ID,则您知道资源所在的位置。您现在需要做两件事:
  • 无效唯一ID(将其从storage/DB中删除)和
  • 从非公开位置提供资源
  • 如果唯一 ID 不再存在于您的存储 (DB) 中,您 只需 return null

您可能需要解决一个问题:例如如果您在浏览器中输入某个 url,它会在您输入时进行预取。这意味着,在某些情况下 link then 被调用不止一次。