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 ?
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.
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!