如何通过CKAN API获取给定的用户数据集列表(public和private)?
How to obtain a given user's dateset list(both public and private) through CKAN API?
在我的项目中,我使用CKAN来管理我的数据,现在我想获得我授权的数据集列表(public和私有数据集),有谁知道我怎么能得到这样的列表通过 CKAN API?
使用package_list
或package_search
获取public个数据集。
使用 user_show
和选项 include_datasets=True
获取您的用户创建的数据集,包括私有数据集和草稿数据集。当然,请记住使用您用户的 api 密钥。
但是我相信这会留下您组织的其他成员创建的私有数据集,这些数据集无法通过 API 访问。我提出了一个问题:https://github.com/ckan/ckan/issues/3176 如果您想为其他人提供修复或赏金。
现在@D Read的issue已经解决了,这个问题有解决办法:
/api/3/action/package_search?include_private=True
使用HTTPie,例如:
http https://ckan.example.com/api/3/action/package_search include_private=True Authorization:123-abc
为什么不
/api/3/action/current_package_list_with_resources
使用API键获取用户可见的所有资源?!如果我们只想要 public 资源,我们可以省略 API 键或(对我来说最合乎逻辑)过滤搜索。其他人认为这应该以这种方式工作吗?
感谢@D阅读指正。
关于这个端点的进一步发现——它returns最多1000条记录,所以如果你想要所有结果并且可能有超过1000条,你需要分批检索。这似乎有效 - self.api
是一个 ckanapi.RemoteCKAN
实例:
ix = 0
results = self.api.action.package_search(
include_private=True, rows=1000
)
datasets = results["results"]
while len(datasets) < results["count"]:
ix += 1000
results = self.api.action.package_search(
include_private=True, start=ix, rows=1000
)
datasets += results["results"]
也就是说,我认为我们从未让此端点 100% 可靠地工作。
在我的项目中,我使用CKAN来管理我的数据,现在我想获得我授权的数据集列表(public和私有数据集),有谁知道我怎么能得到这样的列表通过 CKAN API?
使用package_list
或package_search
获取public个数据集。
使用 user_show
和选项 include_datasets=True
获取您的用户创建的数据集,包括私有数据集和草稿数据集。当然,请记住使用您用户的 api 密钥。
但是我相信这会留下您组织的其他成员创建的私有数据集,这些数据集无法通过 API 访问。我提出了一个问题:https://github.com/ckan/ckan/issues/3176 如果您想为其他人提供修复或赏金。
现在@D Read的issue已经解决了,这个问题有解决办法:
/api/3/action/package_search?include_private=True
使用HTTPie,例如:
http https://ckan.example.com/api/3/action/package_search include_private=True Authorization:123-abc
为什么不
/api/3/action/current_package_list_with_resources
使用API键获取用户可见的所有资源?!如果我们只想要 public 资源,我们可以省略 API 键或(对我来说最合乎逻辑)过滤搜索。其他人认为这应该以这种方式工作吗?
感谢@D阅读指正。
关于这个端点的进一步发现——它returns最多1000条记录,所以如果你想要所有结果并且可能有超过1000条,你需要分批检索。这似乎有效 - self.api
是一个 ckanapi.RemoteCKAN
实例:
ix = 0
results = self.api.action.package_search(
include_private=True, rows=1000
)
datasets = results["results"]
while len(datasets) < results["count"]:
ix += 1000
results = self.api.action.package_search(
include_private=True, start=ix, rows=1000
)
datasets += results["results"]
也就是说,我认为我们从未让此端点 100% 可靠地工作。