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

Cara membina pertanyaan Github APIv4 Golang untuk versi tertentu

WBOY
Lepaskan: 2024-02-13 23:12:08
ke hadapan
964 orang telah melayarinya

如何构建特定版本的 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)
Salin selepas log masuk

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\")"`
}
Salin selepas log masuk

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)"`
}
Salin selepas log masuk

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)"`
}
Salin selepas log masuk

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!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan