Maison >développement back-end >Golang >Comment définir les clés et les valeurs d'en-tête à l'aide du package go : shurcooL/graphql ou hasura/go-graphql-client ?

Comment définir les clés et les valeurs d'en-tête à l'aide du package go : shurcooL/graphql ou hasura/go-graphql-client ?

WBOY
WBOYavant
2024-02-05 22:36:11835parcourir

如何使用 go 包设置标头键和值:shurcooL/graphql 或 hasura/go-graphql-client?

Contenu de la question

Je souhaite donc utiliser le client shurcool ou hasura go (package Go) pour interroger les données du serveur Graphql via Go, mais le serveur de données a besoin de clés et de valeurs telles que "x-hasura-admin- secret" contenu dans l'en-tête de la requête.

Il n'y a aucune mention dans la documentation des deux packages sur la façon de procéder (définition des clés et des valeurs d'en-tête), uniquement sur la manière de définir le jeton d'accès.


Bonne réponse


Le client fourni par https://www.php.cn/link/b93f552915e01e40fb9b66d6fd114f7b a une méthode withrequestmodifier. Vous pouvez ajouter un en-tête de requête comme ceci :

import (
    "net/http"
    graphql "github.com/hasura/go-graphql-client"
)

func gqlinit() {
    client := graphql.newclient("your graphql url here", nil)
    client = client.withrequestmodifier(func(r *http.request) {
        r.header.set("x-hasura-admin-secret", "secret")
    })
}

Découvrez https://www.php.cn/link/3a5f9129110203548b21c0e40e9cd7af et la github lib associée, on dirait qu'ils veulent que vous passiez un *http.client pour ajouter l'en-tête pour vous, vous pouvez faire ceci :

import (
    "net/http"
    graphql "github.com/shurcooL/graphql"
)

type hasuraAuthTransport struct {
    secret string
}

func (h hasuraAuthTransport) RoundTrip(req *http.Request) (resp *http.Response, err error) {
    req.Header.Set("x-hasura-admin-secret", h.secret)
    return http.DefaultTransport.RoundTrip(req)
}

func gqlInit() {
    client := graphql.NewClient("your graphql url here", &http.Client{
        Transport: hasuraAuthTransport{secret: "secret"},
    })
}

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