Aller au contenu

Exercices#

Créer une application CLI pour interagir avec une API RESTful#

Planification de l'application CLI#

  • Identifier les fonctionnalités de base que l'application CLI doit offrir : CRUD (Create, Read, Update, Delete) sont généralement requis pour interagir avec une API RESTful.
  • Définir les entités (par exemple, les utilisateurs, les messages, les tâches) sur lesquelles les commandes CRUD seront exécutées.

Création de l'application CLI avec Cobra#

  • Utiliser Cobra pour initialiser une nouvelle application CLI : cobra init --pkg-name monapp.
  • Définir des commandes de base pour l'application. Par exemple, cobra add getUsers pour ajouter une commande "getUsers".

Ajout des commandes pour interagir avec l'API RESTful#

  • Utiliser le package "net/http" pour envoyer des requêtes HTTP aux endpoints correspondants de l'API.
  • Par exemple, pour la commande "getUsers", le code pourrait ressembler à ceci :
package cmd

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

var getUsersCmd = &cobra.Command{
    Use:   "getUsers",
    Short: "Get list of users",
    Run: func(cmd *cobra.Command, args []string) {
        response, err := http.Get("http://api.example.com/users")
        if err != nil {
            fmt.Printf("The HTTP request failed with error %s\n", err)
        } else {
            data, _ := ioutil.ReadAll(response.Body)
            fmt.Println(string(data))
        }
    },
}

func init() {
    rootCmd.AddCommand(getUsersCmd)
}

Tests et débogage de l'application CLI#

  • Exécuter l'application avec go run main.go getUsers pour tester la commande "getUsers".
  • Utiliser le package "log" pour enregistrer les erreurs et faciliter le débogage.

Développer un outil en ligne de commande pour analyser et traiter des fichiers CSV#

Comprendre les besoins et les spécifications#

  • Identifier les opérations à effectuer sur les fichiers CSV (par exemple, lire, filtrer, trier, agréger).

Création de l'outil CLI avec Cobra#

  • Utiliser Cobra pour initialiser un nouvel outil CLI : cobra init --pkg-name monoutil.
  • Ajouter des commandes de base pour l'outil. Par exemple, cobra add readCSV pour ajouter une commande "readCSV".

Ajout des commandes pour lire, analyser et traiter les fichiers CSV#

  • Utiliser le package "encoding/csv" pour lire et écrire des fichiers CSV.
  • Par exemple, pour la commande "readCSV", le code pourrait ressembler à ceci :
package cmd

import (
    "encoding/csv"
    "fmt"
    "os"
)

var readCSVCmd = &cobra.Command{
    Use:   "readCSV",
    Short: "Read CSV file",
    Run: func(cmd *cobra.Command, args []string) {
        csvfile, err := os.Open("file.csv")
        if err != nil {
            log.Fatalln("Couldn't open the csv file", err)
        }

        r := csv.NewReader(csvfile)

        for {
            record, err := r.Read()
            if err == io.EOF {
                break


            }
            if err != nil {
                log.Fatal(err)
            }

            fmt.Println(record)
        }
    },
}

func init() {
    rootCmd.AddCommand(readCSVCmd)
}

Tests et optimisation de l'outil CLI#

  • Exécuter l'outil avec go run main.go readCSV pour tester la commande "readCSV".
  • Utiliser le package "testing" pour écrire des tests unitaires et le package "pprof" pour profiler l'outil et optimiser son performance.