--- sidebar_position: 20 --- # ドッグAPI ```mdx-code-block

``` :::note このチュートリアルは[@tatadan](https://twitter.com/tatadan)より提供されたもので、[Wails Examples Repository](https://github.com/tataDan/wails-v2-examples)の一部になります。 ::: このチュートリアルでは、Webから犬の写真を取得して表示するためのアプリケーションを開発していきます。 ### プロジェクトの作成 アプリケーションを作成していきましょう。 ターミナルで次のように入力します: `wails init -n dogs-api -t svelte` 注意: IDEサポートが欲しい場合は、コマンドの末尾に、`-ide vscode`オプションまたは`-ide goland`オプションを付与してください。 では、`cd dogs-api`で移動し、プロジェクトファイルの編集を始めましょう。 ### 未使用コードの削除 まず、使用しないと分かっているいくつかの要素を削除していきます: - `app.go`を開き、次の行を削除します: ```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) } ``` - `frontend/src/App.svelte`を開き、すべての行を削除します。 - `frontend/src/assets/images/logo-universal.png`ファイルを削除します。 ### アプリケーションの作成 では、新しいGoコードを書いていきましょう。 関数を定義する前に、`app.go`に下記の構造体の宣言を追加します: ```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 } ``` 下記の関数を`app.go`に追加します(おそらく既存の関数定義の後ろ側に追加することになります): ```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 } ``` `app.go`の`import`セクションを次のように変更します: ```go import ( "context" "fmt" "encoding/json" "io/ioutil" "log" "net/http" "sort" ) ``` `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} ``` ### アプリケーションのテスト バインディングを生成してアプリケーションをテストするには、`wails dev`コマンドを実行してください。 ### アプリケーションのコンパイル アプリケーションを本番用の単一バイナリにコンパイルするには、`wails build`コマンドを実行してください。