gpt4 book ai didi

json - 从 RESTful Web 服务递归下载资源

转载 作者:行者123 更新时间:2023-12-04 20:05:08 25 4
gpt4 key购买 nike

我想从 RESTful HTTP 端点递归下载 JSON 资源并将它们存储在本地目录结构中,按照包含 HTTP URL 的 JSON 字符串形式的相关资源链接。 Wget 似乎是这项工作的一个可能的工具,尽管它的递归下载显然仅限于 HTML 超链接和 CSS url() 引用。

有问题的资源是Swagger文档文件类似于 this one ,尽管在我的情况下,所有 URL 都是绝对的。 Swagger 模式相当复杂,但只要遵循任何看起来像绝对 HTTP(S) URL 的字符串就足够了。更好的是遵循“路径”属性中指定的绝对或相对路径。

任何人都可以建议一个通用的递归爬虫,可以在这里做我想做的事情,或者编写 wget 或类似脚本的轻量级方法来实现它?

最佳答案

我最终编写了一个shell脚本来解决这个问题:

API_ROOT_URL="http://petstore.swagger.wordnik.com/api/api-docs"
OUT_DIR=`pwd`

function download_json {
echo "Downloading $1 to $OUT_DIR$2.json"
curl -sS $1 | jq . > $OUT_DIR$2.json
}

download_json $API_ROOT_URL /api-index

jq -r .apis[].path $OUT_DIR/api-index.json | while read -r API_PATH; do
API_PATH=${API_PATH#$API_ROOT_URL}
download_json $API_ROOT_URL$API_PATH $API_PATH
done

这使用 jq 从索引文件中提取 API 路径,并在下载时漂亮地打印 JSON。如 webron提到这可能只对仍在使用 1.x Swagger 模式的人感兴趣,尽管我可以看到自己在将来针对其他问题调整此脚本。

我在 Swagger 中发现的一个问题是,我们的 API 文档中的条目顺序显然不稳定。针对我们的 API 文档(由 swagger-springmvc 生成)连续多次运行脚本会导致对属性顺序的微小更改。这可以通过使用 jq 的 --sort-keys 对 JSON 对象的属性键进行排序来部分修复。选项,但这并不涵盖所有情况,例如模型架构的 required property 是字符串属性名称的普通数组。

关于json - 从 RESTful Web 服务递归下载资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26463373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com