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.
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)
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\")"` }
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)"` }
Cela a obtenu la réponse avec succès ^
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)"` }
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!