我如何使用节点 js 创建带有到期日期的 tinyURL

how i can create tinyURL with expiration date with node js

我生成 tinyUrl 并通过邮件和短信将其发送给客户 ,我想从 nodejs 代码生成 tinyURL ,这样如果用户在特定日期之后访问这个 URL 那么它应该会过期。 我可以从下面的代码成功生成 tinyurl,但我想生成 link 和到期日期,这样 Link 将在用户点击特定日期后自动过期。

任何解决这个问题的方法或者是另一种选择。

const tinyUrl = require('tinyurl')

const generateTinyUrl = function (mainUrl) {
  return new Promise((resolve, reject) => {
    tinyUrl.shorten(mainUrl).then((response) => {
      if (response !== 'error') {
        logger.info(util.format("Tiny URL Generated Properly."))
        resolve(response)
      } else {
        logger.error(util.format("Error while Generating the Tiny URL. Error: %j", response))
        reject(response)
      }
    }).catch((error) => {
      logger.error(util.format("Error while Generating the Tiny URL. Error: %j", error))
      reject(error)
    })
  })

据我所知,您正在使用 https://www.npmjs.com/package/tinyurltinyurl npm 包,它利用 tinyurl.com 的 API 创建缩短的 urls。这个包不支持过期 links,这意味着一旦你使用他们的服务创建了一个 url,它将永远注册在 tinyurl.com.

但是,您可以直接使用 tinyurl API,忽略 tinyurl npm 包。 Tinyurl 在 tinyurl .com /app /dev 有很好的文档(添加空格是因为 link 缩短器在 SO 上被列入黑名单)这解释了你可以向 api 在 /update 发送一个 PATCH 请求到更改 link 的发送位置。

由于我看不到调用 generateTinyUrl 的内容或响应的使用方式,因此我不确定对于您的情况最好的前进路径是什么。但是,在我看来,您有两个选择。

  • 选项 1:我建议您学习如何使用外部 API 并从您的代码中删除 tinyurl npm 包。然后,您可以安排一个 cron 作业或类似的作业来扫描您的 urls,检测哪些已经过期,并向 /update 发送请求以将 url 更改为自定义页面,向用户解释他们的 link 已过期。
  • 选项 2:当您生成 tinyURL 时,将其指向您控制的域。生成该页面,以便在访问它时从您的数据库中收集相关数据,包括其到期日期。当达到到期日期时,该页面可能会显示您编写的自定义到期消息。