Maison > développement back-end > Golang > le corps du texte

Comment créer une requête Github APIv4 Golang pour une version spécifique

WBOY
Libérer: 2024-02-13 23:12:08
avant
949 Les gens l'ont consulté

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

l'éditeur php Youzi vous présentera comment créer une version spécifique de la requête Golang Github APIv4. Github APIv4 est un outil de requête puissant qui peut aider les développeurs à obtenir et à traiter diverses données sur Github. Cependant, nous pouvons parfois avoir besoin d’obtenir une version spécifique des données, et l’API officielle ne fournit pas directement une telle fonction. Dans cet article, nous explorerons comment écrire des requêtes personnalisées à l'aide de Golang pour obtenir une version spécifique des données.

Contenu de la question

En utilisant https://github.com/shurcooL/githubv4, j'ai vraiment du mal à récupérer une version spécifique pour le référentiel gh.

Lorsque la v3 est disponible, le bloc de code suivant ne renvoie toujours rien :

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)
Copier après la connexion

J'ai obtenu avec succès les deux blocs de code suivants pour la description du référentiel et la réaction au problème :

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

Cela renvoie avec succès la description du référentiel ^

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)"`
}
Copier après la connexion

Cela a obtenu la réponse avec succès ^

Solution de contournement

J'ai découvert que le champ auteur n'est pas une chaîne, mais de type "Utilisateur". Remplacez le champ demandé par "Description" qui est une chaîne et récupère les informations de publication. Si vous avez vraiment besoin d'auteurs, vous devez définir des utilisateurs :

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal