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.