Maison  >  Article  >  développement back-end  >  Comment créer une requête Github APIv4 Golang pour une version spécifique

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

WBOY
WBOYavant
2024-02-13 23:12:08904parcourir

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

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 ^

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

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer