我是GraphQL API的新手。我正在尝试获取每个文件的提交消息和pushedAt日期,您通常可以在任何github的根网页上看到这些消息和日期,其中显示了分支的所有文件(例如https://github.com/Alamofire/Alamofire )。
.github Updates for Xcode 13.3 (#3576) 3 days ago
Tests Fix 2020 and 2021 Deprecation Warnings (#3555) last month
我的graphql似乎在提交数据的资源管理器中不返回任何内容("commitData":{})。我做错了什么?
fragment Files on Tree {
entries {
oid
name
type
path
extension
metaData: object {
... on Blob {
byteSize
isBinary
}
}
commitData: object {
... on Commit {
oid
pushedDate
message
}
}
}
}
query Files($owner: String!, $repo: String!, $branch: String!) {
repository(owner: $owner, name: $repo) {
... on Repository {
object(expression: $branch) {
... on Tree {
...Files
}
}
}
}
}
查询变量:
{
"repo": "Alamofire",
"branch": "HEAD:",
"owner": "Alamofire"
}
发布于 2022-04-01 12:06:15
这是意料之中的。TreeEntry object: GitObject
不公开提交信息。相反,它返回Blob
类型(用于文件对象)或Tree
类型(用于目录路径)。我们怎么知道的?object
的文档("Entry file object")提供了一个模糊的提示,但是我们可以通过内省GraphQL __typename
元场来确定对象类型名称:
metaData: object {
__typename
}
对于文件条目,这将导致:
"metaData": {
"__typename": "Blob"
}
即使Commit
也实现了GitObject
接口,TreeEntry
类型也不返回它。换句话说,你不能从这里到达那里。使用这个API,您似乎需要两个步骤的查询。
https://stackoverflow.com/questions/71499519
复制相似问题