Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara membina pertanyaan Github APIv4 Golang untuk versi tertentu

Cara membina pertanyaan Github APIv4 Golang untuk versi tertentu

WBOY
WBOYke hadapan
2024-02-13 23:12:08904semak imbas

如何构建特定版本的 Github APIv4 Golang 查询

editor php Youzi akan memperkenalkan kepada anda cara membina versi khusus pertanyaan Github APIv4 Golang. Github APIv4 ialah alat pertanyaan yang berkuasa yang boleh membantu pembangun mendapatkan dan memproses pelbagai data pada Github. Walau bagaimanapun, kadangkala kami mungkin perlu mendapatkan versi data tertentu, dan API rasmi tidak menyediakan fungsi sedemikian secara langsung. Dalam artikel ini, kami akan meneroka cara menulis pertanyaan tersuai menggunakan Golang untuk mendapatkan versi data tertentu.

Kandungan soalan

Menggunakan https://github.com/shurcooL/githubv4, saya benar-benar menghadapi masalah menarik balik versi khusus untuk repositori gh.

Apabila v3 tersedia, blok kod berikut sentiasa tidak mengembalikan apa-apa:

var releaseQ struct {
  Repository struct {
    Release struct {
        Author githubv4.String
    } `graphql:"release(tagName:$tagName)"`
  } `graphql:"repository(owner:$repositoryOwner,name:$repositoryName)"`
}
variables = map[string]interface{}{
    "repositoryOwner": githubv4.String("jacobtomlinson"),
    "repositoryName":  githubv4.String("gha-find-replace"),
    "tagName":         githubv4.String("v3"),
}
err = client.Query(context.Background(), &releaseQ, variables)
if err != nil {
    fmt.Println("Query returned nothing")
}
fmt.Println("author:", releaseQ.Repository.Release.Author)

Saya telah berjaya memperoleh dua blok kod berikut untuk penerangan repositori dan reaksi isu:

var repoDescriptionQ struct {
  Repository struct {
    Description string
  } `graphql:"repository(owner: \"jacobtomlinson\", name: \"gha-find-replace\")"`
}

Ini berjaya mengembalikan perihalan repositori ^

variables := map[string]interface{}{
  "repositoryOwner": githubv4.String("jacobtomlinson"),
  "repositoryName":  githubv4.String("gha-find-replace"),
  "issueNumber":     githubv4.Int(55),
  "reactionContent": githubv4.ReactionContentThumbsDown,
}
var reactionQ struct {
Repository struct {
    Issue struct {
        ID        githubv4.ID
        Reactions struct {
            ViewerHasReacted githubv4.Boolean
        } `graphql:"reactions(content:$reactionContent)"`
    } `graphql:"issue(number:$issueNumber)"`
} `graphql:"repository(owner:$repositoryOwner,name:$repositoryName)"`
}

Ini berjaya mendapat respons^

Penyelesaian

Didapati bahawa medan pengarang bukan rentetan, tetapi jenis "Pengguna". Tukar medan yang diminta kepada "Penerangan" yang merupakan rentetan dan ia menarik balik maklumat penyiaran. Jika anda benar-benar memerlukan pengarang, anda perlu menentukan pengguna:

var releaseQ struct {
    Repository struct {
        Release struct {
            Description githubv4.String
        } `graphql:"release(tagName:$tagName)"`
    } `graphql:"repository(owner:$repositoryOwner,name:$repositoryName)"`
}

Atas ialah kandungan terperinci Cara membina pertanyaan Github APIv4 Golang untuk versi tertentu. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam