Heim  >  Artikel  >  Backend-Entwicklung  >  So erstellen Sie eine Github APIv4 Golang-Abfrage für eine bestimmte Version

So erstellen Sie eine Github APIv4 Golang-Abfrage für eine bestimmte Version

WBOY
WBOYnach vorne
2024-02-13 23:12:08904Durchsuche

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

php-Editor Youzi zeigt Ihnen, wie Sie eine bestimmte Version der Github APIv4 Golang-Abfrage erstellen. Github APIv4 ist ein leistungsstarkes Abfragetool, das Entwicklern dabei helfen kann, verschiedene Daten auf Github abzurufen und zu verarbeiten. Manchmal müssen wir jedoch möglicherweise eine bestimmte Datenversion abrufen, und die offizielle API stellt eine solche Funktion nicht direkt bereit. In diesem Artikel erfahren Sie, wie Sie mit Golang benutzerdefinierte Abfragen schreiben, um eine bestimmte Datenversion abzurufen.

Frageninhalt

Bei Verwendung von https://github.com/shurcooL/githubv4 habe ich wirklich Probleme, eine bestimmte Version für das GH-Repository zurückzuholen.

Wenn v3 verfügbar ist, gibt der folgende Codeblock immer nichts zurück:

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)

Ich habe die folgenden zwei Codeblöcke für die Repository-Beschreibung und Problemreaktion erfolgreich erhalten:

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

Dies gibt die Repository-Beschreibung erfolgreich zurück ^

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)"`
}

Die Antwort wurde erfolgreich erhalten^

Problemumgehung

Es wurde festgestellt, dass das Feld „Autor“ keine Zeichenfolge, sondern vom Typ „Benutzer“ ist. Ändern Sie das angeforderte Feld in „Beschreibung“, bei dem es sich um eine Zeichenfolge handelt, die die Buchungsinformationen zurückzieht. Wenn Sie wirklich Autoren benötigen, müssen Sie Benutzer definieren:

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

Das obige ist der detaillierte Inhalt vonSo erstellen Sie eine Github APIv4 Golang-Abfrage für eine bestimmte Version. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen