如何通过GitLab GraphQL API读取仓库文件的原始内容?
获取GitLab仓库文件原始内容的GraphQL解决方案
我刚好碰到过类似的需求,其实GitLab的GraphQL API是支持直接获取文件原始内容的,只是你之前的查询方式没用到正确的字段。
正确的查询语句
你可以直接通过repository.blob字段,指定目标分支和文件路径来获取原始内容,而不是先遍历tree:
{ project(fullPath: "BenSa/first-project") { repository { blob(ref: "master", path: "data.json") { raw # 这里就是文件的原始内容 sha name } } } }
为什么之前的查询拿不到内容?
你之前用tree查询返回的blobs.nodes是简化的Blob对象,只包含基础元数据(名称、sha等),并没有暴露raw字段。而直接调用repository.blob会返回完整的Blob类型实例,其中就包含了我们需要的raw字段——它会直接返回文本文件的原始内容,如果是二进制文件,则会返回base64编码的字符串。
额外提示
- 如果你的文件路径包含子目录,直接在
path参数里填写完整路径即可,比如path: "docs/data.json" ref参数支持分支名、标签名或者commit sha,适配不同场景的查询需求
内容的提问来源于stack exchange,提问作者Stib
相关产品推荐
相关产品推荐

