如何通过HTTP调用REST API列出AWS S3环境中的所有前缀?
获取chromium-browser-snapshots存储桶的所有前缀(RESTful API实现)
由于该存储桶兼容AWS S3 API,你可以通过S3的ListObjectsV2接口获取指定路径下的所有前缀(即目录结构),核心是通过delimiter=/参数让接口返回一级前缀,无需额外认证(该存储桶公开可读)。
JavaScript 实现(基于Fetch API)
直接发送GET请求,通过URL参数指定接口规则,解析返回的XML结果提取前缀:
async function fetchChromiumPrefixes() { const baseUrl = 'https://commondatastorage.googleapis.com/chromium-browser-snapshots'; const queryParams = new URLSearchParams({ delimiter: '/', 'list-type': 2 // 指定使用ListObjectsV2版本接口 }); try { const res = await fetch(`${baseUrl}?${queryParams}`); const xmlStr = await res.text(); // 解析XML获取前缀列表 const parser = new DOMParser(); const xmlDoc = parser.parseFromString(xmlStr, 'application/xml'); const prefixNodes = xmlDoc.querySelectorAll('Prefix'); const prefixes = Array.from(prefixNodes).map(node => node.textContent.trim()); console.log('所有可用前缀:', prefixes); return prefixes; } catch (err) { console.error('请求失败:', err); } } // 调用执行 fetchChromiumPrefixes();
PowerShell 实现(基于Invoke-RestMethod)
利用PowerShell的REST请求工具,解析返回的XML对象提取前缀:
$bucketEndpoint = "https://commondatastorage.googleapis.com/chromium-browser-snapshots" $requestParams = @{ delimiter = "/" "list-type" = 2 } try { $response = Invoke-RestMethod -Uri $bucketEndpoint -Method Get -Body $requestParams $prefixes = $response.ListBucketResult.CommonPrefixes.Prefix Write-Host "所有可用前缀:" $prefixes | ForEach-Object { Write-Host $_ } } catch { Write-Error "请求出错:$_" }
关键说明
delimiter=/:告诉API将路径按/分割,返回当前层级下的所有前缀(目录),而非所有文件对象list-type=2:指定使用S3 ListObjectsV2接口,比旧版ListObjects更高效- 该存储桶为公开可读,无需签名或认证即可发起请求
内容的提问来源于stack exchange,提问作者DaMaxContent
相关产品推荐
相关产品推荐

