--- sidebar_position: 20 --- # API Chiens ```mdx-code-block

``` :::note Ce tutoriel a été gracieusement fourni par [@tatadan](https://twitter.com/tatadan) et fait partie de leur [dépôt d'exemples Wails](https://github.com/tataDan/wails-v2-examples). ::: Dans ce tutoriel, nous allons développer une application qui récupère des photos de chiens du web et les affiche. ### Créer le projet Créons l'application. Depuis un terminal saisissez : `wails init -n dogs-api -t svelte` Note: Nous pouvons ajouter l'une des options suivantes `-ide vscode` ou `-ide goland` à la fin de la commande si vous voulez ajouter le support d'un IDE. Maintenant, exécutons `cd dogs-api` et commençons à éditer les fichiers du projet. ### Retirer le code inutilisé Nous allons commencer par supprimer certains éléments que nous savons que nous n'utiliserons pas : - Ouvrez `app.go` et supprimez les lignes suivantes : ```go // Greet returns a greeting for the given name func (a *App) Greet(name string) string { return fmt.Sprintf("Hello %s, It's show time!", name) } ``` - Ouvrez `frontend/src/App.svelte` et supprimez toutes les lignes. - Supprimer le fichier `frontend/src/assets/images/logo-universal.png` ### Créer notre application Ajoutons maintenant notre nouveau code Go. Ajoutez les déclarations struct suivantes dans `app.go` avant la déclaration des fonctions: ```go type RandomImage struct { Message string Status string } type AllBreeds struct { Message map[string]map[string][]string Status string } type ImagesByBreed struct { Message []string Status string } ``` Ajouter les fonctions suivantes dans `app.go` (après la déclaration de la fonction déjà existante): ```go func (a *App) GetRandomImageUrl() string { response, err := http.Get("https://dog.ceo/api/breeds/image/random") if err != nil { log.Fatal(err) } responseData, err := ioutil.ReadAll(response.Body) if err != nil { log.Fatal(err) } var data RandomImage json.Unmarshal(responseData, &data) return data.Message } func (a *App) GetBreedList() []string { var breeds []string response, err := http.Get("https://dog.ceo/api/breeds/list/all") if err != nil { log.Fatal(err) } responseData, err := ioutil.ReadAll(response.Body) if err != nil { log.Fatal(err) } var data AllBreeds json.Unmarshal(responseData, &data) for k := range data.Message { breeds = append(breeds, k) } sort.Strings(breeds) return breeds } func (a *App) GetImageUrlsByBreed(breed string) []string { url := fmt.Sprintf("%s%s%s%s", "https://dog.ceo/api/", "breed/", breed, "/images") response, err := http.Get(url) if err != nil { log.Fatal(err) } responseData, err := ioutil.ReadAll(response.Body) if err != nil { log.Fatal(err) } var data ImagesByBreed json.Unmarshal(responseData, &data) return data.Message } ``` Modifiez la section `import` de `app.go` pour ressembler à ceci : ```go import ( "context" "fmt" "encoding/json" "io/ioutil" "log" "net/http" "sort" ) ``` Ajouter les lignes suivantes dans `frontend/src/App.svelte`: ```html

Dogs API

Click on down arrow to select a breed

{#if showRandomPhoto} No dog found {/if} {#if showBreedPhotos} {#each photos as photo} No dog found {/each} {/if} ``` ### Tester l'application Pour générer les liaisons et tester l'application, exécutez `wails dev`. ### Compiler l'application Pour compiler l'application en un seul binaire, exécutez `wails build`.