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

Développement Golang : implémentation d'une interface API basée sur GraphQL

王林
Libérer: 2023-09-20 08:15:11
original
1382 Les gens l'ont consulté

Développement Golang : implémentation dune interface API basée sur GraphQL

Développement Golang : implémentation d'une interface API basée sur GraphQL

Introduction :
Dans le développement de logiciels d'aujourd'hui, il est très important de créer des interfaces API flexibles, efficaces et évolutives. En tant que langage de requête et environnement d'exécution émergents, GraphQL offre un moyen plus flexible, intuitif et efficace de définir et d'interroger les interfaces API. Cet article expliquera comment utiliser Golang pour développer des interfaces API basées sur GraphQL et fournira des exemples de code correspondants.

1. Qu'est-ce que GraphQL ?
GraphQL est un langage de requête et un runtime développés par Facebook. Elle est différente des API RESTful traditionnelles. GraphQL permet au client de définir avec précision les structures de données et les champs requis, et renvoie uniquement les données dont le client a besoin, évitant ainsi les problèmes de récupération excessive ou de requêtes inefficaces dans les interfaces API traditionnelles. GraphQL prend également en charge plusieurs requêtes et la combinaison de plusieurs sources de données, ce qui offre aux développeurs front-end plus de flexibilité lors de l'interrogation de données sans nécessiter plusieurs requêtes au backend.

2. Golang et GraphQL
Golang est un langage permettant de développer des applications backend efficaces, évolutives et puissantes. En utilisant Golang pour développer des interfaces API basées sur GraphQL, nous pouvons tirer pleinement parti des performances de concurrence et de l'évolutivité de Golang, et obtenir une requête et un traitement de données efficaces.

3. Mettre en place un environnement de développement
Avant de commencer le développement, nous devons installer plusieurs bibliothèques nécessaires pour prendre en charge le développement GraphQL.

  1. Installer Golang
    Tout d'abord, nous devons installer Golang. La dernière version de Golang peut être téléchargée et installée via le site officiel (https://golang.org/).
  2. Installer la bibliothèque GraphQL
    Golang fournit de nombreuses bibliothèques pour prendre en charge le développement GraphQL. Parmi elles, les bibliothèques les plus populaires sont : github.com/graphql-go/graphql, github.com/graph-gophers/graphql-go, etc. Vous pouvez choisir l'une de ces bibliothèques ou en choisir d'autres en fonction de vos besoins.

Dans cet article, nous choisissons d'utiliser la bibliothèque github.com/graphql-go/graphql pour implémenter l'interface API basée sur GraphQL.

Tout d'abord, ouvrez le terminal et utilisez la commande suivante pour installer la bibliothèque :
allez chercher github.com/graphql-go/graphql

4. Implémentez l'interface API de GraphQL
Ci-dessous, nous montrerons comment l'utiliser via un exemple simple Golang pour implémenter l'interface API basée sur GraphQL.

Nous supposons que nous construisons un site de blog et que nous devons implémenter une interface API pour interroger le titre, l'auteur et le texte du blog.

  1. Créer un schéma GraphQL
    Tout d'abord, nous devons créer un schéma GraphQL pour définir notre structure de données et nos types de requêtes. Dans cet exemple, nous définissons un objet Blog et un type Query.
type Blog struct {
    ID     graphql.ID
    Title  string
    Author string
    Body   string
}

var (
    blogs   []*Blog
    root    *graphql.Object
    schema  *graphql.Schema
)

func init() {
    root = graphql.NewObject(graphql.ObjectConfig{
        Name: "Query",
        Fields: graphql.Fields{
            "blog": &graphql.Field{
                Type: graphql.NewList(blogType),
                Resolve: func(p graphql.ResolveParams) (interface{}, error) {
                    return blogs, nil
                },
            },
        },
    })

    schema, _ = graphql.NewSchema(graphql.SchemaConfig{
        Query: root,
    })
}
Copier après la connexion
  1. Créer une interface API
    Ensuite, nous devons créer une interface API pour recevoir et traiter les requêtes de requête GraphQL et renvoyer les résultats correspondants.

Nous créons un gestionnaire HTTP pour gérer les requêtes GraphQL et utilisons la fonction Execute de la bibliothèque graphql-go pour exécuter des requêtes GraphQL.

func GraphqlHandler(w http.ResponseWriter, r *http.Request) {
    result := graphql.Do(graphql.Params{
        Schema:        *schema,
        RequestString: r.URL.Query().Get("query"),
    })

    if len(result.Errors) > 0 {
        log.Printf("execution failed: %v", result.Errors)
        http.Error(w, result.Errors[0].Message, http.StatusInternalServerError)
        return
    }

    json.NewEncoder(w).Encode(result)
}
Copier après la connexion
  1. Enregistrer l'interface API
    Enfin, nous devons enregistrer l'interface API et démarrer le serveur HTTP pour répondre aux requêtes de requête GraphQL.
func main() {
    http.HandleFunc("/graphql", GraphqlHandler)
    log.Fatal(http.ListenAndServe(":8080", nil))
}
Copier après la connexion

5. Testez l'interface API de GraphQL
Après avoir démarré le serveur HTTP, nous pouvons utiliser des outils (tels que Postman) pour tester l'interface API de GraphQL.

Envoyez une requête POST à ​​http://localhost:8080/graphql, définissez l'en-tête de la requête Content-Type sur application/json et le corps de la requête est l'exemple de requête suivant :

{
    "query": "{ blog { title author body } }"
}
Copier après la connexion

Le serveur renverra les résultats de la requête correspondants , et renvoie uniquement ce qui est requis dans le champ de demande.

6. Résumé
Cet article présente comment utiliser Golang pour développer une interface API basée sur GraphQL et fournit des exemples de code correspondants. En utilisant Golang et GraphQL, nous pouvons créer rapidement et de manière flexible des interfaces API efficaces et mieux répondre aux besoins des clients. J'espère que cet article pourra vous aider à comprendre et à appliquer le développement GraphQL !

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!

Étiquettes associées:
source:php.cn
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