node.js - 我如何使用节点 js 创建具有到期日期的 tinyURL
问题描述
我正在生成 tinyUrl 并通过邮件和短信发送给客户,我想从 nodejs 代码生成 tinyURL,这样如果用户在特定日期之后访问此 URL,那么它应该会过期。我可以从下面的代码成功生成 tinyurl,但我想生成带有到期日期的链接,这样一旦用户在特定日期之后点击,链接就会自动到期。
解决这个问题的任何方法,或者是另一种选择。
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 创建缩短的 url。这个包不支持过期链接,这意味着一旦你使用他们的服务创建了一个 url,它将永远在 tinyurl.com 上注册。
但是,您可以直接使用 tinyurl API,而忽略tinyurl
npm 包。Tinyurl 有很好的文档tinyurl .com /app /dev
(添加空格,因为链接缩短器在 SO 上被列入黑名单),其中解释了您可以在 /update 处向 api 发送 PATCH 请求以更改链接的发送位置。
由于我看不到正在调用什么generateTinyUrl
或如何使用响应,因此我不确定对于您的情况而言最好的前进路径是什么。但是,在我看来,你有两个选择。
- 选项 1:我建议您学习如何使用外部 API 并
tinyurl
从代码中删除 npm 包。然后,您可以安排一个 cron 作业或类似的作业来扫描您的 url,检测哪些已过期,并向 /update 发送请求以将 url 更改为向用户解释其链接已过期的自定义页面。 - 选项 2:当您生成 tinyURL 时,让它指向您控制的域。生成该页面,以便在访问该页面时,它会从您的数据库中收集相关数据,包括其到期日期。当达到到期日期时,该页面可能会显示您编写的自定义到期消息。
推荐阅读
- c++ - D3D11 CreateSwapChainForHwnd 因 DXGI_ERROR_INVALID_CALL 或 E_INVALIDARG 而失败
- swift - 为什么 DispatchQueue.main.async 在 Swift 应用程序中不起作用?
- python - 如何找到下面的元素?. 我需要点击 Excel 图片
- java - 为什么我们需要在 Java 中重新定义寡妇关闭方法?
- android - 查看更改不正确
- python - ValueError:在 Python 3.6 中的 TextIOWrapper 上使用 .read 时对已关闭文件的 I/O 操作
- python - 如何解决 keras 拟合函数错误“所有输入数组 (x) 应具有相同数量的样本”?
- atom-editor - 你如何 console.log 登录 Atom?
- python - 如何使用 python 在 Tor 浏览器中启动链接?
- java - 打开 Api $ref 使用 url