javascript - 如何读取 JSON 并重定向下载
问题描述
我正在尝试这样做,以便我的网站读取githubs api并自动将用户发送到最新的下载链接,在这种情况下,标签是browser_download_url
,我将如何使用JSON.parse()
或其他方式来阅读并重定向用户
解决方案
JSON.stringify
如果您使用fetch
API ,则无需调用。
您可以从 JSON 对象中解构 URL,然后为该 URL 打开一个新选项卡以启动下载。
fetch('https://api.github.com/repos/portablemc/portablemc/releases/latest')
.then(response => response.json())
.then(json => {
const { assets: [ { browser_download_url } ] } = json; // Destructure
console.log(browser_download_url); // Log the URL
window.open(browser_download_url, '_blank'); // Open a new tab
});
如果您希望这是一个按钮,您可以编写如下函数:
const main = async () => {
const btn = await initDownloadButton('#download-btn', {
url: 'https://api.github.com/repos/portablemc/portablemc/releases/latest'
});
console.log(`Initialized: #${btn.id}`);
};
const initDownloadButton = async (btn, options) => {
if (typeof btn === 'string') btn = document.querySelector(btn);
const downloadUrl = await fetchLatestDownloadUrl(options.url);
btn.addEventListener('click', () => {
console.log(`Opening: ${downloadUrl}`);
window.open(downloadUrl, '_blank')
});
return btn;
};
const fetchLatestDownloadUrl = async (url) => {
const response = await fetch(url);
const { assets: [ { browser_download_url } ] } = await response.json();
return browser_download_url;
}
main();
<button id="download-btn">Download</button>
推荐阅读
- xml - 长字符串中的 & 实体使模板出现故障
- swift - Xcode 11.4.1 没有响应
- swift - void函数中意外的非void返回值 - Swift
- python - 如何使序列化器字段仅显示给 django rest 框架中的登录用户
- ruby - 为 Jekyll 创建本地 gem 并不断收到“没有安装 jekyll-custom-plugin 或其依赖项之一”,因为 jekyll 无法找到它
- ios - 为什么我的导航控制器现在进行模态转换而不是推送?
- php - 关于 HTML5canvas div 图片单独下载
- ace-editor - React Ace Editor 突出显示其他单词中间的关键字
- mysql-python - Cloudera manager 代理无法安装 - 没有提供 cloudera-manager-agent 所需的 MySQL-python、python、python-psycopg2
- assembly - 从 8086 程序集中的程序段前缀中读取命令行参数